UserDict和Dict之间有没有区别?

3 投票
1 回答
830 浏览
提问于 2025-04-15 18:08

如果我想让一个类像字典那样工作,为什么我应该从 dictUserDict 继承呢?

1 个回答

8

在任何版本为2.2或更高的Python中,你都可以从dict这个字典类型继承,但你需要重写每一个你感兴趣的方法。比如说,如果你重写了__getitem__这个方法,但是如果你不重写get方法的话,get方法就不会使用你重写的__getitem__,其他方法也是一样。

UserDict.DictMixin是一个比较早的工具,它允许你只实现几个方法:其他的方法会自动使用你自己重写的部分。不过要注意,从官方文档来看:

从Python 2.6版本开始,建议使用collections.MutableMapping来代替DictMixin

collections模块中的新抽象基类(ABCs)和以前的UserDict.DictMixin有类似的好处,适用范围更广,而且结构更规范。

撰写回答