[問題] 多重繼承以及super()

看板Python作者 (Tsl)時間7年前 (2018/08/09 23:59), 編輯推噓1(105)
留言6則, 2人參與, 7年前最新討論串1/2 (看更多)
各位python版的前輩大家好 最近小弟在自學python 到了多重繼承的這邊有點小疑問 程式碼如下: class Base(object): def __init__(self): print ("enter Base") print ("leave Base") class A(Base): def __init__(self): print ("enter A") super(A, self).__init__() print ("leave A") class B(Base): def __init__(self): print ("enter B") super(B, self).__init__() print ("leave B") class C(A, B): def __init__(self): print ("enter C") super(C, self).__init__() print ("leave C") c = C() 輸出的是: enter C enter A enter B enter Base leave Base leave B leave A leave C 我知道多重繼承中 super()調用的順序是根據MRO列表的順序 所以到leave Base都可以理解 疑問的點在於leave B->leave A->leave C的順序 想請問這邊程式是怎麼運行才會是如輸出的順序 感謝各位的解答 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.233.167.108 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1533830384.A.72D.html

08/10 11:40, 7年前 , 1F
這是多重繼承的菱形缺陷,跟呼叫方法順序MRO有關,雖然
08/10 11:40, 1F

08/10 11:40, 7年前 , 2F
我沒有完全了解,但可以去翻翻 Expert Python Programm
08/10 11:40, 2F

08/10 11:40, 7年前 , 3F
ing 這本書
08/10 11:40, 3F

08/10 11:44, 7年前 , 4F

08/10 11:45, 7年前 , 5F
這是該主題的原始文件
08/10 11:45, 5F

08/11 00:35, 7年前 , 6F
thanks a lot
08/11 00:35, 6F
文章代碼(AID): #1RR6JmSj (Python)
討論串 (同標題文章)
文章代碼(AID): #1RR6JmSj (Python)