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-一种将类作为隐式参数而不是实例接收的方法。

静态方法-一种不接收隐式参数self作为第一个参数的方法。

具有属性的属性:创建用于管理属性的获取,设置和删除的功能。

Python 3.x隐式仅支持新样式类。在类声明中,不需要在括号中提及“对象”一词。