Python:如何处理不可订阅的对象?

标签 python methods dictionary subscript

我读过 a thread on what a (non)subscriptable object is但它并没有告诉我我能做些什么。

我有一个调用 mypost 的代码私有(private)模块。目的是设置邮件帐户并为此创建 MailAccounts() mypost 中定义的对象模块。帐户数量及其各自的详细信息在配置文件中进行了描述。应用程序启动时,会收集账户信息并存储在字典中,字典结构为:accounts = {service : { <MailAccounts Object at xxxxx> : {username : myusername, password : mypassword}}}其中 service可以是“gmail”,其中 MailAccounts是在 mypost 中定义的类模块。 到目前为止,一切都很好。但是,当我想设置帐户时,我需要调用它的方法:MailAccounts.setupAccount(username, password) .我通过迭代字典的每个 MailAccount 对象并要求运行该方法来做到这一点:

for service in accounts:
        for account in accounts[service]:
            account.setupAccount(account['username'], account['password'])

但是您可能已经猜到它不起作用,Python 返回:

TypeError: 'MailAccount' object is not subscriptable

如果我手动创建相同的帐户但它有效:

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:如何处理不可订阅的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5977165/

相关文章:

python - 删除mongodb中的重复值

python - 如何计算 Python 中非高斯分布中值的中值和 68% 置信区间?

python - 使用 Pandas DataFrames 比较两个标题不同但行数据相同的 excel 文件

java - Java 中的参数传递(ArrayList 与 Integer)

list - 将python中的单个有序列表转换为字典,pythonically

text - 崇高文本 3(和 2): newly installed dictionaries do not work

python - 为什么 len 在 DataFrame 上比在底层 numpy 数组上效率高得多?

java - 搜索数组中的元素并返回它

javascript - 如何按值对关联数组进行排序并保留值?

java - 如何修复 boolean 方法中的返回错误