W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
單繼承
class <類名>(父類名)
<代碼快>
類的多重繼承
class 類名(父類1,父類2,....,父類n)
<代碼塊>
Python的類可以繼承多個類,Java和C#中則只能繼承一個類
Python的類如果繼承了多個類,那么其尋找方法的方式有兩種,分別是:深度優(yōu)先和廣度優(yōu)先
當類是經(jīng)典類時,多繼承情況下,會按照深度優(yōu)先方式查找
當類是新式類時,多繼承情況下,會按照廣度優(yōu)先方式查找
經(jīng)典類和新式類,從字面上可以看出一個老一個新,新的必然包含了跟多的功能,也是之后推薦的寫法,從寫法上區(qū)分的話,如果 當前類或者父類繼承了object類,那么該類便是新式類,否則便是經(jīng)典類。
經(jīng)典類多繼承
class D:
def bar(self):
print 'D.bar'
class C(D):
def bar(self):
print 'C.bar'
class B(D):
def bar(self):
print 'B.bar'
class A(B, C):
def bar(self):
print 'A.bar'
a = A()
# 執(zhí)行bar方法時
# 首先去A類中查找,如果A類中沒有,則繼續(xù)去B類中找,如果B類中么有,則繼續(xù)去D類中找,如果D類中么有,則繼續(xù)去C類中找,如果還是未找到,則報錯
# 所以,查找順序:A --> B --> D --> C
# 在上述查找bar方法的過程中,一旦找到,則尋找過程立即中斷,便不會再繼續(xù)找了
a.bar()
新式類多繼承
class D(object):
def bar(self):
print 'D.bar'
class C(D):
def bar(self):
print 'C.bar'
class B(D):
def bar(self):
print 'B.bar'
class A(B, C):
def bar(self):
print 'A.bar'
a = A()
# 執(zhí)行bar方法時
# 首先去A類中查找,如果A類中沒有,則繼續(xù)去B類中找,如果B類中么有,則繼續(xù)去C類中找,如果C類中么有,則繼續(xù)去D類中找,如果還是未找到,則報錯
# 所以,查找順序:A --> B --> C --> D
# 在上述查找bar方法的過程中,一旦找到,則尋找過程立即中斷,便不會再繼續(xù)找了
a.bar()
經(jīng)典類:首先去A類中查找,如果A類中沒有,則繼續(xù)去B類中找,如果B類中么有,則繼續(xù)去D類中找,如果D類中么有,則繼續(xù)去C類中找,如果還是未找到,則報錯
新式類:首先去A類中查找,如果A類中沒有,則繼續(xù)去B類中找,如果B類中么有,則繼續(xù)去C類中找,如果C類中么有,則繼續(xù)去D類中找,如果還是未找到,則報錯
**注意:88在上述查找過程中,一旦找到,則尋找過程立即中斷,便不會再繼續(xù)找
本文出自 “一盞燭光” 博客,謝絕轉(zhuǎn)載!
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: