旧式类 vs. 新式类(三)

2018-09-24  本文已影响0人  import_hello

转载须注明出处:简书@Orca_J35

目录.png

4. 重要差异

引入新式类的主要动机是为了提供具有完整元模型(meta-model)的统一对象模型。新式类还具备许多实用功能:可将大多数内置类型子类化、引入了"描述符(descriptors)"等。

新式类和旧式类除了 type() 的返回值不同以外,两者在许多重要的细节上也拥有完全不同的行为。"新对象模型"与"旧对象模型"相比,一些行为拥有根本性的差异,比如调用特殊方法的方式。另外,"新对象模型"还对之前的部分行为进行"修正(fixes)",比如在多重继承中的方法解析顺序。

新式类较旧式类的重要差异如下:[1] [2]

6. 术语

classic class

in Glossary of Python 2

Any class which does not inherit from object. See new-style class. Classic classes have been removed in Python 3.

new-style class

Any class which inherits from object. This includes all built-in types like list and dict. Only new-style classes can use Python's newer, versatile features like __slots__, descriptors, properties, and __getattribute__(), class methods, and static methods.

More information can be found in New-style and classic classes.

7. 扩展阅读

8. 注脚

赞赏.jpg
  1. What is the difference between old style and new style classes in Python?

  2. The Inside Story on New-Style Classes

上一篇下一篇

猜你喜欢

热点阅读