在Python中继承类"对象"的目的是什么?

52 python object deprecated future-proof new-style-class

所有Python内置object函数都是子类,我遇到了许多用户定义的类.为什么?这堂课的目的是object什么?这只是一个空洞的课,对吧?

Dav*_*ver 52

简而言之,它设置了免费的神奇小马.

总之,Python 2.2及更早版本使用了"旧式类".它们是类的特定实现,并且它们有一些限制(例如,您不能将内置类型子类化).解决这个问题的方法是创建一种新的类.但是,这样做会涉及一些向后不兼容的变化.因此,为了确保为旧样式类编写的代码仍然有效,object创建该类以充当所有新样式类的超类.因此,在Python 2.X中,class Foo: pass将创建一个旧式类class Foo(object): pass并将创建一个新的样式类.

更长的时间,请参阅Python 2.2中的 Guido的Unifying类型和类.

而且,一般来说,养成让所有类都成为新风格的习惯是一个好主意,因为有些东西(@property装饰者是想到的东西)不能用于旧式类.

  • 对于后代,值得一提的是新样式类是Python3中的默认类,子类化`object`是不必要的. (9认同)

Chr*_*heD 7

简短的回答:子类化object有效地使它成为一个新式的类(请注意,这是不必要的,因为在Python 3.x中自动)

对于new style类和old style类之间的区别:请参阅此stackoverflow问题.有关完整的故事:请参阅Python类型和对象上的这篇精彩文章.