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装饰者是想到的东西)不能用于旧式类.
简短的回答:子类化object有效地使它成为一个新式的类(请注意,这是不必要的,因为在Python 3.x中自动)
对于new style类和old style类之间的区别:请参阅此stackoverflow问题.有关完整的故事:请参阅Python类型和对象上的这篇精彩文章.