Python中的旧式类和新式类有什么区别?

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 教程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程