我讀過a thread on what a (non)subscriptable object is,但它並沒有告訴我我能做些什麼。Python:如何處理非可自定義的對象?
我有一個代碼調用mypost
私有模塊。目標是設置郵件帳戶,並且爲此我創建mypost
模塊中定義的MailAccounts()
對象。帳戶數量及其各自詳細信息在配置文件中進行描述。當應用程序啓動時,它會收集帳戶信息並將其存儲在字典中,其結構如下: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>
是一個字典鍵右鍵?這使得它不具備可兌換性(無論這可能意味着什麼)?
沒有這到底意味着什麼是不可訂閱的?這個例子中的含義是什麼?當然:在這種情況下,我如何解決/繞過這個問題?
謝謝, 本傑明:)
燦你向我們顯示填入「賬戶」的代碼,根據需要刪除任何敏感信息? – 2011-05-12 11:26:44
@onteria:我現在有我的答案,你介意我是否跳過你的要求?謝謝。 – Benjamin 2011-05-12 11:38:41