我有一个 dict 子类,它的工作是在嵌套 dict 键不存在时动态添加它,如果调用 append 则执行列表追加:
class PowerDict(dict):
def __getitem__(self, item):
try:
return dict.__getitem__(self, item)
except KeyError:
value = self[item] = type(self)()
return value
def append(self,item):
if type(self) != list:
self = list()
self.append(item)
所以
a = PowerDict()
a['1']['2'] = 3
产生输出:
a = {'1': {'2': 3}}
但是,有时我需要做这样的事情:
b = PowerDict()
b['1']['2'].append(3)
b['1']['2'].append(4)
应该产生输出:
b = {'1': {'2': [3, 4]}}
但上面的代码产生输出:
{'1': {'2': {}}}
我错过了什么?