新式與舊式類

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