我目前正在阅读Mark Pilgrim撰写的Dive Into Python,并已进入继承部分。在section 5.5中,Pilgrim提到了继承自包装类UserDict与继承自内置dict类型之间的区别。
我无法理解为什么有人会打扰包装类...从UserDict包装类(或任何其他UserXxx类)继承有什么好处?
非常感谢您的意见。谢谢!
答案 0 :(得分:3)
你是对的:
这门课程的必要性 很大程度上取代了能力 直接来自dict的子类(一个特征 从那开始变得可用 Python版本2.2)。在...之前 用户指南dict的介绍 class被用来创造 字典式的子类 通过覆盖获得新的行为 现有方法或添加新方法。
注意第一句话。这来自UserDict的documentation。
哦,在Python 3中它已经消失了。
答案 1 :(得分:3)
包装类已从Python 3中删除,因为它们暂时还没有那么有用。 mixin 类UserDict.DictMixin
是一个完全不同的故事 - 它的有用功能现在遍布collections
模块中的“抽象基类”(Python 2.6和3。*)。
答案 2 :(得分:1)
我在你链接的页面上找到了一个答案的提示:
在2.2之前的Python版本中, 你不能直接子类 内置数据类型,如字符串, 列表和词典。补偿 为此,Python附带了包装器 模仿行为的类 这些内置数据类型:UserString, UserList和UserDict。用一个 正常与特殊的结合 方法,UserDict类做了 优秀的字典模仿。 在Python 2.2及更高版本中,您可以 直接从内置继承类 数据类型如dict。
实际上,今天你可能想要分类dict,而不是UserDict。