Python语言新样式与旧样式类

示例

Python 2.x 2.2.0

在Python 2.2中引入了新的类,以统一类型。它们从顶级object类型继承。新型类是用户定义的类型,与内置类型非常相似。

# 新式课
class New(object):
    pass

# 新样式实例
new = New()

new.__class__
# <class '__main__.New'>
type(new)
# <class '__main__.New'>
issubclass(New, object)
# 真正

旧式不能从继承object。旧式实例始终使用内置instance类型来实现。

# 老式类
class Old:
    pass

# 旧式实例
old = Old()

old.__class__
# <class __main__.Old at ...>
type(old)
# <type 'instance'>
issubclass(Old, object)
# 假
Python 3.x 3.0.0

在Python 3中,删除了旧式类。

Python 3中的新型类隐式继承自object,因此不再需要指定MyClass(object)。

class MyClass:
    pass

my_inst = MyClass()

type(my_inst)
# <class '__main__.MyClass'>
my_inst.__class__
# <class '__main__.MyClass'>
issubclass(MyClass, object)
# 真正