python中的super

super用于繼承,同一父類只繼承一次

普通繼承

    class A:  
      def __init__(self):  
        print("Enter A")  
        print("Leave A")  
    class B(A):  
      def __init__(self):  
        print("Enter B")  
        A.__init__(self)  
        print("Leave B")  
    class C(A):  
      def __init__(self):  
        print("Enter C")  
        A.__init__(self)  
        print("Leave C")  
    class D(A):  
      def __init__(self):  
        print("Enter D")  
        A.__init__(self)  
        print("Leave D")  
    class E(B, C, D):  
      def __init__(self):  
        print("Enter E")  
        B.__init__(self)  
        C.__init__(self)  
        D.__init__(self)  
        print("Leave E")  

E()  

Enter E
Enter B
Enter A
Leave A
Leave B
Enter C
Enter A
Leave A
Leave C
Enter D
Enter A
Leave A
Leave D
Leave E

super繼承

    class A:  
      def __init__(self):  
        print("Enter A")  
        print("Leave A")  
    class B(A):  
      def __init__(self):  
        print("Enter B")  
        super(B, self).__init__()  
        print("Leave B")  
    class C(A):  
      def __init__(self):  
        print("Enter C")  
        super(C, self).__init__()  
        print("Leave C")  
    class D(A):  
      def __init__(self):  
        print("Enter D")  
        super(D, self).__init__()  
        print("Leave D")  
    class E(B, C, D):  
      def __init__(self):  
        print("Enter E")  
        super(E, self).__init__()  
        print("Leave E")  

E()  

Enter E
Enter B
Enter C
Enter D
Enter A
Leave A
Leave D
Leave C
Leave B
Leave E

在super機(jī)制里可以保證公共父類僅被執(zhí)行一次,至于執(zhí)行的順序,是按照MRO(Method Resolution Order):方法解析順序 進(jìn)行的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • super() 的入門使用 在類的繼承中,如果重定義某個(gè)方法,該方法會(huì)覆蓋父類的同名方法,但有時(shí),我們希望能同時(shí)實(shí)...
    時(shí)間之友閱讀 567評(píng)論 0 0
  • Python進(jìn)階-繼承中的MRO與super @(Python)[python, python進(jìn)階] [TOC] ...
    理查德成閱讀 1,636評(píng)論 2 10
  • 在類的繼承中,如果重定義某個(gè)方法,該方法會(huì)覆蓋父類的同名方法,但有時(shí),我們希望能同時(shí)實(shí)現(xiàn)父類的功能,這時(shí),我們就需...
    旅行的木訥閱讀 271評(píng)論 0 0
  • 原文出處: geekvi super() 的入門使用 在類的繼承中,如果重定義某個(gè)方法,該方法會(huì)覆蓋父類的同名方法...
    PyChina閱讀 1,091評(píng)論 0 1
  • 秋雨微涼劃夜去,未見闌珊,瀟細(xì)池中入。珠水難凝蓮葉腐,殘花落盡孤蓬佇。 昏暗燈光輕照路,淚水不禁,舊日臺(tái)階處?;腥?..
    豎子小閱讀 294評(píng)論 0 0

友情鏈接更多精彩內(nèi)容