如果我希望某个类有字典行为,我为什么要继承dict
或UserDict
?
答案 0 :(得分:8)
您可以在任何版本为2.2或更高版本的Python中继承dict
,但您必须覆盖所有感兴趣的方法 - 例如,覆盖__getitem__
将不是被get
使用,除非你也覆盖那个,依此类推。
UserDict.DictMixin
混合可以追溯到更远的地方,让您只实现几种方法:其他方法,由混合提供,将提取并使用你自己的重写。但请注意the docs:
从Python 2.6开始,它 建议使用 collections.MutableMapping而不是 DictMixin。
collections
模块中的新ABCs(抽象基类)与良好的旧UserDict.DictMixin
具有相同的优点,适用性更广,规律性更强。