新式与旧式类

Python 2.x >= 2.2.0

** Python 2.2 中引入了新式类来统一类型。他们继承了顶级的 object 类型。新样式类是用户定义的类型,与内置类型非常相似。

# new-style class
class New(object):
    pass

# new-style instance
new = New()

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

旧式继承 object。旧式实例始终使用内置的 instance 类型实现。

# old-style class
class Old:
    pass

# old-style instance
old = Old()

old.__class__
# <class __main__.Old at ...>
type(old)
# <type 'instance'>
issubclass(Old, object)
# False

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)
# True