如果我輸入這個代碼,
class A:
pass
class B(A):
def show_letter(self):
print("This is B")
class C(B):
def show_letter(self):
super().show_letter()
print("This is C")
class E(B):
def show_letter(self):
super().show_letter()
print("This is E")
class D(C, E):
division = "North"
def show_letter(self):
super().show_letter()
print("This is D")
div1 = D()
div1.show_letter()
它回傳:
This is B
This is E
This is C
This is D
為什么要印“E”?如果我在 C 類中洗掉 super(),則不會列印“E”。謝謝你。
uj5u.com熱心網友回復:
這是因為方法決議順序。第一個呼叫是 in D
,然后C
由于引數 order:呼叫它D(C, E)
。它可以B
稱為父級,但后者也是 的父級E
,因此稱為第一個。只有在那之后才有B
電話。因此,您的呼叫順序是D -> C -> E -> B并且該print
順序受到尊重。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/469260.html
標籤:python-3.x 遗产 极好的