定義済みの有効なキーのセットを使用して、2 つの異なる辞書を実装したいと考えています。また、一方のディクショナリにはもう一方のディクショナリが含まれています。
class Otherdict (dict):
_keys = ['A','B']
def __init__(self):
for key in self._keys:
self[key] = None
def populateDict(self):
self['B'] = 10
self['A'] = 12
class MyDict(dict):
_keys = ['R','ED']
def __init__(self):
for key in self._keys:
self[key] = None
def __getitem__(self, key):
if key not in self._keys:
raise Exception("'" + key + "'" + " is not a valid key")
dict.__getitem__(self,key)
def __setitem__(self, key, value):
if key not in self._keys:
raise Exception("'" + key + "'" + " is not a valid key")
dict.__setitem__(self,key,value)
def populateDict(self):
d = Otherdict()
d.populateDict()
self['R'] = 3
self['ED'] = d
a = MyDict()
a.populateDict()
print a['ED'].__class__ #prints <type 'NoneType'>
問題は、何らかの理由で「ED」キーの下にある辞書にアクセスできないことです。ここで何が間違っていますか?
__getitem__()
メソッドを削除すると、コードが正しく機能することにも気付きました