我想用一組預定義的有效鍵實現兩個不同的字典。另外,一個字典包含另一個字典。擴展Dict類的正確方法是什麼?
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__()
方法,代碼工作正常
您是否需要執行'if key not in self._keys:'check?你不能只調用'dict .__ getitem__'並讓異常傳播嗎? – Eric
我只是推薦你使用比'Exception'更特殊的異常類型;它會使捕捉異常更容易。 – JPvdMerwe
影響巨大的輕微錯誤,很容易被發現。儘管如此,沒有理由-1,恕我直言。 – glglgl