2012-09-09 67 views
-9
class idDict(dict): 
    def __getattr__(self,key): 
     return 'dsaads' 
d=idDict() 
print d['ss'] 

我只是得到一個錯誤:KeyError: 'ss'。根據一些在線論壇,這應該工作。 我想打印出'dsaads'使用getattr與詞典

這也行不通;我得到同樣的錯誤:

from collections import defaultdict 
class idDict(defaultdict): 
    def __getattr__(self,key): 
     return 'dsaads' 
d=idDict() 
print d['ss'] 

回答

2

使用__getitem__

>>> class idDict(dict): 
    def __getitem__(self,key): 
     return 'dsaads' 

>>> d=idDict() 
>>> d['a'] 
'dsaads' 

>>> help(dict.__getitem__) 

Help on method_descriptor: 

__getitem__(...) 
    x.__getitem__(y) <==> x[y] 
9

__getattr__()是爲屬性,而不是索引。但dict已經支持索引,並且您沒有該鍵的值。也許你正在尋找collections.defaultdict