Python面向?qū)ο?.7類繼承

2018-06-08 17:30 更新

繼承類定義

單繼承

  1. class <類名>(父類名)

  2.  <代碼快>

類的多重繼承

  1. class 類名(父類1,父類2,....,父類n)

  2.   <代碼塊>

  1. Python的類可以繼承多個類,Java和C#中則只能繼承一個類

  2. Python的類如果繼承了多個類,那么其尋找方法的方式有兩種,分別是:深度優(yōu)先和廣度優(yōu)先

  • 當類是經(jīng)典類時,多繼承情況下,會按照深度優(yōu)先方式查找

  • 當類是新式類時,多繼承情況下,會按照廣度優(yōu)先方式查找

經(jīng)典類和新式類,從字面上可以看出一個老一個新,新的必然包含了跟多的功能,也是之后推薦的寫法,從寫法上區(qū)分的話,如果 當前類或者父類繼承了object類,那么該類便是新式類,否則便是經(jīng)典類。


經(jīng)典類多繼承

  1. class D:

  2.    def bar(self):

  3.        print 'D.bar'

  4. class C(D):

  5.    def bar(self):

  6.        print 'C.bar'

  7. class B(D):

  8.    def bar(self):

  9.        print 'B.bar'

  10. class A(B, C):

  11.    def bar(self):

  12.        print 'A.bar'

  13. a = A()

  14. # 執(zhí)行bar方法時

  15. # 首先去A類中查找,如果A類中沒有,則繼續(xù)去B類中找,如果B類中么有,則繼續(xù)去D類中找,如果D類中么有,則繼續(xù)去C類中找,如果還是未找到,則報錯

  16. # 所以,查找順序:A --> B --> D --> C

  17. # 在上述查找bar方法的過程中,一旦找到,則尋找過程立即中斷,便不會再繼續(xù)找了

  18. a.bar()

新式類多繼承

  1. class D(object):

  2.    def bar(self):

  3.        print 'D.bar'

  4. class C(D):

  5.    def bar(self):

  6.        print 'C.bar'

  7. class B(D):

  8.    def bar(self):

  9.        print 'B.bar'

  10. class A(B, C):

  11.    def bar(self):

  12.        print 'A.bar'

  13. a = A()

  14. # 執(zhí)行bar方法時

  15. # 首先去A類中查找,如果A類中沒有,則繼續(xù)去B類中找,如果B類中么有,則繼續(xù)去C類中找,如果C類中么有,則繼續(xù)去D類中找,如果還是未找到,則報錯

  16. # 所以,查找順序:A --> B --> C --> D

  17. # 在上述查找bar方法的過程中,一旦找到,則尋找過程立即中斷,便不會再繼續(xù)找了

  18. a.bar()

  1. 經(jīng)典類:首先去A類中查找,如果A類中沒有,則繼續(xù)去B類中找,如果B類中么有,則繼續(xù)去D類中找,如果D類中么有,則繼續(xù)去C類中找,如果還是未找到,則報錯

  2. 新式類:首先去A類中查找,如果A類中沒有,則繼續(xù)去B類中找,如果B類中么有,則繼續(xù)去C類中找,如果C類中么有,則繼續(xù)去D類中找,如果還是未找到,則報錯

**注意:88在上述查找過程中,一旦找到,則尋找過程立即中斷,便不會再繼續(xù)找


本文出自 “一盞燭光” 博客,謝絕轉(zhuǎn)載!

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號