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

キー 'name'を 'james'に設定するようにコンストラクタを書き込む方法を教えてください。"dict"を適切にサブクラス化するにはどうすればよいですか?

>>> 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' 

を、あなたが見てみたいことがあります(C)はPython 2.5.2では

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

私は常にサブクラスにしたいコンストラクタで "super(MyDict、self)..."を実行する必要があります一言を書いてみませんか?それは必須条件ですか? – TIMEX

+2

dict .__ init __(self、* args、** kwargs)も動作しますが、super()スタイルが推奨されます。 – wberry

+0

dictの__init__をまったく呼び出さないと、オブジェクトの状態が一貫していない可能性があり、dictとして使用できなくなる可能性があります。 – wberry

関連する問題