您好,登錄后才能下訂單哦!
python中的類分為經(jīng)典類(舊式類)和新式類。python的新式類是2.2版本為了統(tǒng)一類和實(shí)例引進(jìn)來的。
在Python2.x中默認(rèn)都是經(jīng)典類,只有顯式繼承了object的才是新式類。
如下所示:
# 新式類,顯示繼承object
class A(object):
pass
# 經(jīng)典類
class A():
pass
# 經(jīng)典類
class A:
pass
在python3.x中取消了經(jīng)典類,默認(rèn)都是新式類,并且新式類不需要顯式的繼承object對(duì)象。如下所示,這三種寫法都可以,并無(wú)區(qū)別:
# 第一種
class A(object):
pass
# 第二種
class A():
pass
# 第三種
class A:
pass
MRO
(method resolution order 基類搜索順序)算法是采用深度優(yōu)先搜索,而新式類的
MRO
算法采用C3算法廣度優(yōu)先搜索。新式類和經(jīng)典類最大的不同在于繼承搜索的順序發(fā)生了改變。
經(jīng)典類采用深度優(yōu)先搜索,也就是先深入繼承樹左側(cè)查找,然后再返回,開始查找右側(cè):
class A:
def show(self):
print("From A")
class B(A):
def show(self):
print("From B")
class C(A):
def show(self):
print("From C")
class D(B, C):
pass
d = D()
d.show()
# From B
新式類采用廣度優(yōu)先搜索,先在水平方向查找,再向上查找:
class A(object):
def show(self):
print("From A")
class B(A):
def show(self):
print("From B")
class C(A):
def show(self):
print("From C")
class D(B, C):
pass
d = D()
d.show()
# From C
參考: https://www.9xkd.com/
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。