[問題] 關於多重繼承與super的呼叫問題
Os環境:Win7
Py版本: 3.8.10
請看一下以下的程式碼:
#--------------------------------
class a:
def __init__(self):
print("init of a!!")
class b:
def __init__(self):
print("init of b!!")
class c:
def __init__(self):
print("init of c!!")
class d(a,b,c):
def __init__(self):
print("enter d!!")
super().__init__()
super(a, self).__init__()
super(b, self).__init__()
super(c, self).__init__()
print("d end!!")
d_o = d()
#-------------------------------
輸出:
enter d!!
init of a!! <-- super().__init__() 的結果
init of b!! <-- super(a, self).__init__() 的結果
init of c!! <-- super(b, self).__init__() 的結果
d end!!
這結果想不通,經過交叉確認後,
發現是 super(c, self).__init__() 這行沒輸出。
請問不能指定執行哪個父類別的建構式(__init__)嗎?
而且指定父類別後,還會往繼承順序後方後跳一個?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.243.134.206 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1648020979.A.221.html
推
03/23 16:04,
2年前
, 1F
03/23 16:04, 1F
推
03/23 16:12,
2年前
, 2F
03/23 16:12, 2F
→
03/23 16:13,
2年前
, 3F
03/23 16:13, 3F
→
03/23 16:14,
2年前
, 4F
03/23 16:14, 4F
→
03/23 16:32,
2年前
, 5F
03/23 16:32, 5F
Python 近期熱門文章
PTT數位生活區 即時熱門文章