我目前正在阅读Mark Pilgrim的Dive Into Python,并且已经介绍了有关继承的部分。在section 5.5中,Pilgrim提到了继承自包装类UserDict与继承自内建字典类型之间的差异。直接从Python中的内置类与其包装类继承
我很难理解为什么有人会打扰包装类...继承自UserDict包装类(或任何其他UserXxx类)的好处是什么?
您的建议非常感谢。谢谢!
我目前正在阅读Mark Pilgrim的Dive Into Python,并且已经介绍了有关继承的部分。在section 5.5中,Pilgrim提到了继承自包装类UserDict与继承自内建字典类型之间的差异。直接从Python中的内置类与其包装类继承
我很难理解为什么有人会打扰包装类...继承自UserDict包装类(或任何其他UserXxx类)的好处是什么?
您的建议非常感谢。谢谢!
你说得对:
需要该类一直 通过能力直接 子从字典(功能 变得可用开始 Python版本2.2)很大程度上取代。在引入字典之前,使用UserDict 类创建 类似字典的子类,其中 通过重写 现有方法或添加新类来创建新行为。
注意第一句。这来自UserDict的documentation。
哦,在Python 3中它已经消失了。
包装类已经从Python 3中删除,因为它们现在还没有被使用。 mixin类,UserDict.DictMixin
,是一个完全不同的故事 - 它的有用特性现在遍布在collections
模块(Python 2.6和3. *)中的“抽象基类”中。
我发现,您链接到网页上,一个提示答案:
在Python版本2.2之前, 你不能直接继承 内置的数据类型,例如字符串, 列表和字典。为了补偿 ,Python带有包装 类,它们模仿了这些内置数据类型的行为:UserString, UserList和UserDict。使用正常和特殊 方法的 组合,UserDict类可以很好地模仿字典。 在Python 2.2和更高版本中,您可以从 数据类型(如dict)直接继承类。
实际上,今天你可能想要分类字典,而不是UserDict。