Python:如何处理不可下载的对象?
作者:互联网
我已经阅读了a thread on what a (non)subscriptable object is,但它没有告诉我我能做些什么.
我有一个代码调用mypost私有模块.目的是设置邮件帐户并执行此操作,我创建mypost模块中定义的MailAccounts()对象.帐户数量及其各自的详细信息在配置文件中描述.当应用程序启动时,它会收集帐户信息并将其存储在字典中,其结构为:accounts = {service:{< MailAccounts Object at xxxxx> :{username:myusername,password:mypassword}}}其中service可以是“gmail”,其中MailAccounts是mypost模块中定义的类.
到现在为止还挺好.但是,当我想设置帐户时,我需要调用它的方法:MailAccounts.setupAccount(用户名,密码).我这样做是通过迭代字典的每个MailAccount对象并要求运行该方法:
for service in accounts:
for account in accounts[service]:
account.setupAccount(account['username'], account['password'])
但是你可能已经猜到它不起作用,Python会返回:
TypeError:’MailAccount’对象不可订阅
如果我手动创建相同的帐户,但它的工作原理:
account = MailAccount()
account.setupAccount('myusername', 'mypassword')
现在我认为它与我的< MailAccount Object at xxxx>这一事实有关.字典键是对的吗?这使得它不可订阅(无论这意味着什么)?
不,这究竟是什么意思是不可订阅的?在这个例子中它意味着什么?当然:在这种情况下我如何解决/绕过这个问题?
谢谢,
本杰明:)
解决方法:
修复它的方法是正确使用字典.
for service in accounts:
for account, creds in accounts[service].iteritems():
account.setupAccount(creds['username'], creds['password'])
标签:python,methods,dictionary,subscript 来源: https://codeday.me/bug/20190626/1296056.html