一只萌萌小番薯
这是另一种可能性,灵感来源于雷蒙德·赫廷格的超级(被认为是超级),在Python2.7.X和3.4.X上进行了测试:from collections import OrderedDict, defaultdictclass OrderedDefaultDict(OrderedDict, defaultdict):
def __init__(self, default_factory=None, *args, **kwargs):
#in python3 you can omit the args to super
super(OrderedDefaultDict, self).__init__(*args, **kwargs)
self.default_factory = default_factory如果你检查了全班的MRO(又名,help(OrderedDefaultDict)),你会看到这个:class OrderedDefaultDict(collections.OrderedDict, collections.defaultdict)
| Method resolution order:
| OrderedDefaultDict
| collections.OrderedDict
| collections.defaultdict | __builtin__.dict | __builtin__.object意味着当OrderedDefaultDict初始化后,它将服从OrderedDict但是这个人反过来会调用defaultdict调用前的方法__builtin__.dict这正是我们想要的。