编程语言
首页 > 编程语言> > Python:如何处理不可下载的对象?

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