UserDict和Dict之间有没有区别?
如果我想让一个类像字典那样工作,为什么我应该从 dict
或 UserDict
继承呢?
1 个回答
8
在任何版本为2.2或更高的Python中,你都可以从dict
这个字典类型继承,但你需要重写每一个你感兴趣的方法。比如说,如果你重写了__getitem__
这个方法,但是如果你不重写get
方法的话,get
方法就不会使用你重写的__getitem__
,其他方法也是一样。
UserDict.DictMixin
是一个比较早的工具,它允许你只实现几个方法:其他的方法会自动使用你自己重写的部分。不过要注意,从官方文档来看:
从Python 2.6版本开始,建议使用
collections.MutableMapping
来代替DictMixin
。
在collections
模块中的新抽象基类(ABCs)和以前的UserDict.DictMixin
有类似的好处,适用范围更广,而且结构更规范。