在Python中子类化“对象”类的目的是什么?
-
24-09-2019 - |
题
所有 Python 内置函数都是以下类的子类 object
我也遇到过许多用户定义的类。为什么?上课的目的是什么 object
?这只是一个空班级,对吗?
解决方案
在短,它设置免费神奇小马。
在长,Python 2.2中和先前使用的“旧式类”。他们是一个特定的实现类,和他们有一些限制(例如,你不能继承内建类型)。对此问题进行修复是创建类的新风格。但是,这样做会涉及一些向后兼容的变化。因此,要确保这是老样式类仍然可以工作编写的代码中,object
类创建作为所有新样式类的超类。
因此,在Python 2.X,class Foo: pass
将创建一个旧式类class Foo(object): pass
将创建一个新的样式类。
在更长的时间,见圭的 统一类型和类在Python 2.2 。
和,在一般情况下,这是一个好主意,让进入使所有的类新型的习惯,因为有些东西(的@property
装饰是一个来记)不会有老式类的工作。
其他提示
短的答案:继承object
有效使得它新型类(注意,这是因为在Python 3.x的自动不必要)
有关new style
类和old style
类之间的差:看到这个计算器质疑。对于完整的故事:看在Python类型这个漂亮的书面记录和对象 。 p>
这与课程的“新式”有关。你可以在这里读更多关于它的内容: http://docs.python.org/tutorial/classes.html#multiple-inheritance 还有这里: http://docs.python.org/reference/datamodel.html#new-style-and-classic-classes
使用新式类将允许您使用“Python 更新的多功能功能,如 __slots__、描述符、属性和 __getattribute__()”。
右,但它标志着类为新型类。新近,因为它花费少而且未来样张你的代码开发类应使用object
基地。
在短版是经典类,这并不需要一个超类,有可能无法在不破坏大量的旧代码周围工作的限制。因此,他们创造了新的样式类,其子类从object
的概念,现在你可以做很酷的事情想定义属性,并且继承dict
不再疼痛和奇怪的错误的练习。
的细节是在Python文档的第3.3节:新建 - 风格和经典类。
Python 2.2中引入了 “新式类”。子类的对象是,以表明你的类应该是一种新的风格类,不是旧式的一个选择方式。