直接从内置类型与Python中的包装类继承

时间:2009-11-02 03:45:51

标签: python inheritance types wrapper built-in

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

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

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

3 个答案:

答案 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。