這篇文章將為大家詳細(xì)講解有關(guān)python3頂層父類(lèi)多次循環(huán)的解決方法,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
如何避免頂層父類(lèi)中的某個(gè)方法被執(zhí)行多次呢,此時(shí)就需要super()來(lái)發(fā)揮作用了,super本質(zhì)上是一個(gè)類(lèi),內(nèi)部記錄著MRO信息,由于C3算法確保同一個(gè)類(lèi)只會(huì)被搜尋一次,這樣就避免了頂層父類(lèi)中的方法被多次執(zhí)行了,比如針對(duì)鉆石繼承問(wèn)題2中的代碼可以改為:
class A(object): def m(self): print("m of A called") class B(A): def m(self): print("m of B called") super().m() class C(A): def m(self): print("m of C called") super().m() class D(B,C): def m(self): print("m of D called") super().m()
此時(shí)打印的結(jié)果就變成了:
m of D called m of B called m of C called m of A called
關(guān)于python3頂層父類(lèi)多次循環(huán)的解決方法就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。