單繼承
class <類名>(父類名)
<代碼快>
類的多重繼承
class 類名(父類1,父類2,....,父類n)
<代碼塊>
Python的類可以繼承多個(gè)類,Java和C#中則只能繼承一個(gè)類
Python的類如果繼承了多個(gè)類,那么其尋找方法的方式有兩種,分別是:深度優(yōu)先和廣度優(yōu)先
當(dāng)類是經(jīng)典類時(shí),多繼承情況下,會(huì)按照深度優(yōu)先方式查找
當(dāng)類是新式類時(shí),多繼承情況下,會(huì)按照廣度優(yōu)先方式查找
經(jīng)典類和新式類,從字面上可以看出一個(gè)老一個(gè)新,新的必然包含了跟多的功能,也是之后推薦的寫法,從寫法上區(qū)分的話,如果 當(dāng)前類或者父類繼承了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方法時(shí)
# 首先去A類中查找,如果A類中沒有,則繼續(xù)去B類中找,如果B類中么有,則繼續(xù)去D類中找,如果D類中么有,則繼續(xù)去C類中找,如果還是未找到,則報(bào)錯(cuò)
# 所以,查找順序:A --> B --> D --> C
# 在上述查找bar方法的過程中,一旦找到,則尋找過程立即中斷,便不會(huì)再繼續(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方法時(shí)
# 首先去A類中查找,如果A類中沒有,則繼續(xù)去B類中找,如果B類中么有,則繼續(xù)去C類中找,如果C類中么有,則繼續(xù)去D類中找,如果還是未找到,則報(bào)錯(cuò)
# 所以,查找順序:A --> B --> C --> D
# 在上述查找bar方法的過程中,一旦找到,則尋找過程立即中斷,便不會(huì)再繼續(xù)找了
a.bar()
經(jīng)典類:首先去A類中查找,如果A類中沒有,則繼續(xù)去B類中找,如果B類中么有,則繼續(xù)去D類中找,如果D類中么有,則繼續(xù)去C類中找,如果還是未找到,則報(bào)錯(cuò)
新式類:首先去A類中查找,如果A類中沒有,則繼續(xù)去B類中找,如果B類中么有,則繼續(xù)去C類中找,如果C類中么有,則繼續(xù)去D類中找,如果還是未找到,則報(bào)錯(cuò)
**注意:88在上述查找過程中,一旦找到,則尋找過程立即中斷,便不會(huì)再繼續(xù)找
本文出自 “一盞燭光” 博客,謝絕轉(zhuǎn)載!
更多建議: