看板 Python 關於我們 聯絡資訊
Gemini 教我說類別就算是基底類別也要在__init__() 中加入super().__init__() 以防這個類別被不知道的人採用多重繼承來繼承這個基底類別, 然後說這樣這個 類別就不會被叫"不合群",導致類別初始化時 __init__() MRO chain 斷裂. 她講得煞有介事, 可是我怎麼找都找不到網路文章有提到這件事 這事到底是不是真的? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.98.66 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1771923252.A.EF1.html
s0914714: 如果啥都沒繼承應該是不用吧? 02/25 01:21
s0914714: 就是單純繼承object的情況 02/25 01:22
leolarrel: 我後來已經放棄"繼承"了,改用組合 02/26 16:26
s0914714: 大部分情況都不需要用到很複雜的繼承 組合會好一點 02/26 18:13
timTan: 寫了沒壞處 03/21 10:15
timTan: 是真的 03/21 10:15
ddavid: 都問 AI 了,你就叫它寫一個最小可重現案例來證明它會出事 03/27 11:38
ddavid: ,實際跑看看就知道它是不是瞎說了 03/27 11:39
leolarrel: 樓上,一開始就有做了 03/27 13:00
leolarrel: 依他的實驗的確會出事,但奇怪這麼重要的事情網路論壇都 03/27 13:01
leolarrel: 沒討論串,在這問也沒幾個人知道,讓我懷疑再懷疑 03/27 13:02
cuteSquirrel: 獅子專業 03/28 10:02
ddavid: 有實例就是事實了,而之所以沒有太多人談,有可能是其實會 03/31 17:48
ddavid: 觸發這個問題的 pattern 並沒有那麼常見,掉坑的人不多XD 03/31 17:49
ddavid: 首先,如果只是單繼承串發生這問題,很容易發現錯誤 03/31 18:16
ddavid: 而且一般外部 package 都不會發生這問題,也就是要發生得 03/31 18:18
ddavid: 一般是自己寫的繼承關係,還要剛好有觸發條件 03/31 18:21
ddavid: 畢竟用了繼承也不一定每一層都會初始化,常常底層只是介面 03/31 18:23
ddavid: 然後繼承的實作層才在初始化,然後不會再往下一層了 03/31 18:23
ddavid: 現在也不推崇用一堆層層疊疊過度設計的繼承,有些情況可取 03/31 18:24
ddavid: 代方案很多 03/31 18:24