新式与旧式类
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