6.3 dict的子类¶
- 不建议直接继承 c 语言实现的内置结构 dict,list
class MyDict(dict):
def __setitem__(self, key, value):
super().__setitem__(key, value * 2)
my_dict = MyDict(one=1)
print(my_dict) # 1, 某些情况下,不会调用重写的__setitem__
my_dict['one'] = 1
print(my_dict) # 2, 触发重写的 __setitem__
- 可继承 UserDict 实现自定义
- python 语法模拟 c 语言实现细节
- defaultdict 实现 __missing__
from collections import defaultdict
d2 = defaultdict(list)
# 实现了 __missing__ 魔法函数,可参考UserDict __getitem__ 实现
value = d2['key']
print(value)
print(dict(d2))