1

我目前正在阅读Mark Pilgrim 的Dive Into Python,并已进入继承部分。在5.5 节中,Pilgrim 提到了从包装类 UserDict 继承与从内置 dict 类型继承之间的区别。

我很难理解为什么有人会打扰包装类......从 UserDict 包装类(或任何其他 UserXxx 类)继承有什么好处?

非常感谢您的意见。谢谢!

4

3 回答 3

3

你是对的:

对此类的需求在很大程度上已被直接从 dict 子类化的能力所取代(该功能从 Python 2.2 版开始可用)。在引入 dict 之前,UserDict 类用于创建类似字典的子类,这些子类通过覆盖现有方法或添加新方法来获得新行为。

注意第一句话。这来自 UserDict 的文档

哦,在 Python 3 中它消失了。

于 2009-11-02T03:51:39.320 回答
3

包装类已从 Python 3 中删除,因为它们已经有一段时间没那么有用了。mixin类是一个完全不同的UserDict.DictMixin故事——它的有用特性现在遍布collections模块中的“抽象基类”(Python 2.6 和 3.*)。

于 2009-11-02T03:54:55.963 回答
1

我在您链接到的页面上发现了有关答案的提示:

在 2.2 之前的 Python 版本中,您不能直接子类化内置数据类型,如字符串、列表和字典。为了弥补这一点,Python 提供了模仿这些内置数据类型行为的包装类:UserString、UserList 和 UserDict。UserDict 类结合使用普通方法和特殊方法,可以很好地模仿字典。在 Python 2.2 及更高版本中,您可以直接从 dict 等内置数据类型继承类。

实际上,今天您可能想要子类 dict,而不是 UserDict。

于 2009-11-02T03:56:20.013 回答