新式與舊式類
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