在Python 3.x中取消了经典类,默认都是新式类,并且不必显式的继承object,也就是说:
class Person(object):pass
class Person():pass
class Person:pass
三种写法并无区别,推荐第一种
但是在Python2.x中,默认都是经典类,只有显式继承了object才是新式类,即:
class Person(object):pass 新式类写法
class Person():pass 经典类写法
class Person:pass 经典类写法
他们最明显的区别在于继承搜索的顺序发生了改变,即
经典类多继承搜索顺序(深度优先):
先深入继承树左侧查找,然后再返回,开始查找右侧
例python3新式类:
class A:
def save(self):
print("a")
class B(A):
def save(self):
print("b")
class C(A):
def save(self):
print("c")
class D(B, C):
def __init__(self):
pass
d = D()
d.save()
>> b
网友评论