[問題] super() 與MRO 鏈斷裂問題

看板Python作者 (真.粽子無雙)時間1月前 (2026/02/24 16:54), 編輯推噓7(7014)
留言21則, 5人參與, 5天前最新討論串1/1
Gemini 教我說類別就算是基底類別也要在__init__() 中加入super().__init__() 以防這個類別被不知道的人採用多重繼承來繼承這個基底類別, 然後說這樣這個 類別就不會被叫"不合群",導致類別初始化時 __init__() MRO chain 斷裂. 她講得煞有介事, 可是我怎麼找都找不到網路文章有提到這件事 這事到底是不是真的? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.98.66 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1771923252.A.EF1.html

02/25 01:21, 1月前 , 1F
如果啥都沒繼承應該是不用吧?
02/25 01:21, 1F

02/25 01:22, 1月前 , 2F
就是單純繼承object的情況
02/25 01:22, 2F

02/26 16:26, 1月前 , 3F
我後來已經放棄"繼承"了,改用組合
02/26 16:26, 3F

02/26 18:13, 1月前 , 4F
大部分情況都不需要用到很複雜的繼承 組合會好一點
02/26 18:13, 4F

03/21 10:15, 2周前 , 5F
寫了沒壞處
03/21 10:15, 5F

03/21 10:15, 2周前 , 6F
是真的
03/21 10:15, 6F

03/27 11:38, 1周前 , 7F
都問 AI 了,你就叫它寫一個最小可重現案例來證明它會出事
03/27 11:38, 7F

03/27 11:39, 1周前 , 8F
,實際跑看看就知道它是不是瞎說了
03/27 11:39, 8F

03/27 13:00, 1周前 , 9F
樓上,一開始就有做了
03/27 13:00, 9F

03/27 13:01, 1周前 , 10F
依他的實驗的確會出事,但奇怪這麼重要的事情網路論壇都
03/27 13:01, 10F

03/27 13:02, 1周前 , 11F
沒討論串,在這問也沒幾個人知道,讓我懷疑再懷疑
03/27 13:02, 11F

03/28 10:02, 1周前 , 12F
獅子專業
03/28 10:02, 12F

03/31 17:48, 5天前 , 13F
有實例就是事實了,而之所以沒有太多人談,有可能是其實會
03/31 17:48, 13F

03/31 17:49, 5天前 , 14F
觸發這個問題的 pattern 並沒有那麼常見,掉坑的人不多XD
03/31 17:49, 14F

03/31 18:16, 5天前 , 15F
首先,如果只是單繼承串發生這問題,很容易發現錯誤
03/31 18:16, 15F

03/31 18:18, 5天前 , 16F
而且一般外部 package 都不會發生這問題,也就是要發生得
03/31 18:18, 16F

03/31 18:21, 5天前 , 17F
一般是自己寫的繼承關係,還要剛好有觸發條件
03/31 18:21, 17F

03/31 18:23, 5天前 , 18F
畢竟用了繼承也不一定每一層都會初始化,常常底層只是介面
03/31 18:23, 18F

03/31 18:23, 5天前 , 19F
然後繼承的實作層才在初始化,然後不會再往下一層了
03/31 18:23, 19F

03/31 18:24, 5天前 , 20F
現在也不推崇用一堆層層疊疊過度設計的繼承,有些情況可取
03/31 18:24, 20F

03/31 18:24, 5天前 , 21F
代方案很多
03/31 18:24, 21F
文章代碼(AID): #1fdMSqxn (Python)
文章代碼(AID): #1fdMSqxn (Python)