旧样式 类 与新样式 类
Old Style Classes vs New Style Classes
我对 python 中的新旧样式 class 有点困惑。
所以基本上在 Python 3.X 中只有新样式 classes 可以继承和不继承其他 classes,而在 Python 2.X 新样式 classes 必须是另一个 class 或对象的子classes,而旧样式 classes 根本不能继承。是吗?
没有。在 Python 2 中,要使 class 成为 new-style class,它必须继承自 object
(或某些 superclass ). Old-style classes 会继承其他 old-style classes,但是基础的不是从 object 继承的;他们刚刚写成 class MyClass:
.
大多数情况下,当新的 classes 出现时,人们开始编写 class MyClass(object):
并且对于 99% 的使用,一切都保持不变。差异在于 double-underscore 方法和其他对大多数代码无关紧要的低级细节。
推理是为了消除 built-in 类型和 user-defined classes 之间的差异; Guido的推理可以看here.
现在这已成为历史,Python 3 只有 classes。 Python 2.2 引入了 new-style classes 并于 2001 年 12 月 21 日 发布。你不需要知道这个。
我对 python 中的新旧样式 class 有点困惑。 所以基本上在 Python 3.X 中只有新样式 classes 可以继承和不继承其他 classes,而在 Python 2.X 新样式 classes 必须是另一个 class 或对象的子classes,而旧样式 classes 根本不能继承。是吗?
没有。在 Python 2 中,要使 class 成为 new-style class,它必须继承自 object
(或某些 superclass ). Old-style classes 会继承其他 old-style classes,但是基础的不是从 object 继承的;他们刚刚写成 class MyClass:
.
大多数情况下,当新的 classes 出现时,人们开始编写 class MyClass(object):
并且对于 99% 的使用,一切都保持不变。差异在于 double-underscore 方法和其他对大多数代码无关紧要的低级细节。
推理是为了消除 built-in 类型和 user-defined classes 之间的差异; Guido的推理可以看here.
现在这已成为历史,Python 3 只有 classes。 Python 2.2 引入了 new-style classes 并于 2001 年 12 月 21 日 发布。你不需要知道这个。