2011-07-17 94 views
0
class MyDict(dict): 
    def __init__(self, *args): 
     #fill in here 

如何編寫構造函數,以便將密鑰'name'設置爲'james'。如何恰當地繼承「dict」?

d = MyDict() 
print d['name'] ....this should print out "james" 

回答

2

在(C)的Python 2.5.2:

>>> class MyDict(dict): 
... def __init__(self, *args, **kwargs): 
...  super(MyDict, self).__init__(*args, **kwargs) 
...  self['name'] = 'james' 
... 
>>> d = MyDict() 
>>> print d['name'] 
james 
0

字典的基本子類將允許基本存儲:

class MyDict(dict): 
    def __init__(self, *args): 
     super(MyDict, self).__init__(*args, **kwargs) 
     self['name'] = 'james' 

對於更復雜的存儲,你可能想看看into __setitem____getitem__

+0

我應該總是在構造函數中執行「super(MyDict,self)...」每次我想要subc一個字典?這是一項要求嗎? – TIMEX

+2

dict .__ init __(self,* args,** kwargs)也可以工作,但推薦使用super()風格。 – wberry

+0

如果你根本不調用dict的__init__,那麼你的對象可能沒有一個一致的狀態,因此可能不能用作字典。 – wberry