Python中的旧式类和新式类有什么区别?
在Python 2.x中,有两个类风格,具体取决于是否有一个内置类型作为基类 –
"classic" style or old style classes have no built-in type as a base class:
>>> class OldSpam: # no base class
... pass
>>> OldSpam.__bases__
()
“新”风格的类:它们具有内置类型作为基类,这意味着,直接或间接地,它们具有对象作为基类 –
>>> class NewSpam(object): # directly inherit from object
... pass
>>> NewSpam.__bases__
(<type 'object'>,)
>>> class IntSpam(int): # indirectly inherit from object...
... pass
>>> IntSpam.__bases__
(<type 'int'>,)
>>> IntSpam.__bases__[0].__bases__ # ... because int inherits from object
(<type 'object'>,)
编写类时,总是要选择新式类。这样做的优点是很多的,下面列出一些优点 –
支持描述符。特别是,以下结构使用描述符是可能的 –
classmethod -不是实例而是接收类作为隐式参数的方法。
staticmethod -不作为第一个参数接收隐式参数self的方法。
带有属性:创建管理属性的获取,设置和删除的函数。
Python 3.x仅隐式支持新式类。在类声明中无需在括号中提及单词object。
阅读更多:Python 教程