**簡單,定義四個類,a,b,c,d,其中d繼承自b和c,而b,c繼承自a,從第一步開始看
classa:
defrun
(self)
:# 第五步,列印如下print語句,此時self也是d類的例項物件
print
(f'a哈哈'
)class
b(a)
:def
run(self)
:# 第三步,首先列印print語句,此時self是d類的例項物件,然後呼叫父類的run方法
# 因為self是d類的例項物件,而且b父類的run方法已經呼叫過
# 所以此時再呼叫父類方法呼叫的是c類的run方法,然後程式移到第四步
print
(f'b哈哈'
)super()
.run(
)class
c(a)
:def
run(self)
:# 第四步,首先列印print語句,然後呼叫父類方法
# 此時self也是d類的例項物件,而且b類和c類等父類已經呼叫過
# 所以會繼續向上尋找父類,即會呼叫a類的run方法,然後程式移到第五步
print
(f'c哈哈'
)super()
.run(
)class
d(b, c)
:def
run(self)
:# 第二步,列印print語句,然後呼叫父類run方法,此時呼叫的是b父類中的run方法
# 因為d類第乙個父類是b類
# 然後程式會移動第三步
print
(f'd哈哈'
)super()
.run(
)d = d(
)# 第一步,呼叫d類中的run方法,然後程式會移到第二步
d.run(
)
輸出結果如下
d哈哈<__main__.d object at 0x000001bfa761aac8
>
b哈哈<__main__.d object at 0x000001bfa761aac8
>
c哈哈<__main__.d object at 0x000001bfa761aac8
>
a哈哈<__main__.d object at 0x000001bfa761aac8
>
使用__mro__
print
(d.__mro__)
在本例中,輸出結果如下
(
<
class
'__main__.d'
>
,<
class
'__main__.b'
>
,<
class
'__main__.c'
>
,<
class
'__main__.a'
>
,<
class
'object'
>
)
Python中的多繼承
python和c 一樣,支援多繼承。概念雖然容易,但是困難的工作是如果子類呼叫乙個自身沒有定義的屬性,它是按照何種順序去到父類尋找呢,尤其是眾多父類中有多個都包含該同名屬性。class p1 object deffoo self print p1 foo class p2 object deffoo...
python中的多繼承
一 介紹 python同樣有限的支援多繼承形式。多繼承的類定義形如下例 class derivedclassname base1,base2,base3 需要注意圓括號中父類的順序,若是父類中有相同的方法名,而在子類使用時未指定,python從左至右搜尋 即方法在子類中未找到時,從左到右查詢父類中是...
Python中的多繼承
coding utf8 1.多繼承 子類有多個父類 class human def init self,self.defp self print 這是human的方法 class person def init self,name self.name name defp self print 這是p...