python - 在 Python 中对类 "object"进行子类化的目的是什么?

标签 python object deprecated future-proof new-style-class

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

最佳答案

注意:新式类是 Python 3 中的默认类。子类化 object那里是不必要的。阅读下文,了解有关使用 Python 2 的更多信息。

简而言之,它释放了魔法小马。

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

更长的时间,请参阅 Guido 的 Unifying types and classes in Python 2.2 .

而且,一般来说,养成使所有类都采用新样式的习惯是个好主意,因为有些东西(想到的是 @property 装饰器)不适用于旧样式类。

关于python - 在 Python 中对类 "object"进行子类化的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15997466/

相关文章:

javascript - Immutable.JS 联系和修改输出

android - 来自 url 的 LinearLayout setBackgroundDrawable 位图

ios - iOS 7 的 UIAlertView/UIAlertController 兼容性

python - 根据通用对象属性的值从对象列表中选择项目

python - 在外部文件中存储 unpicklabe pygame.Surface 对象

python - 解析 JSON 时出现 TypeError : list indices must be integers or slices, not str

ios - 不推荐使用RotateFromInterfaceOrientation吗?

python - 使用数字、分类和文本管道制作 ColumnTransformer

C# 绑定(bind)对象到字符串

javascript - 如何根据先前的选择动态填充下拉值?