這段代碼:
class a:
def __init__(self):
print("a here")
class b(a):
def __init__(self):
print("b here")
super().__init__()
B = b()
class a:
def __init__(self):
print("NEW a here")
BB = b()
產生這個輸出:
b here
a here
b here
a here
為什么?
如果我更改 super()。b類中的init ()到a。init (self),它作業正常。
uj5u.com熱心網友回復:
類b持有對其基類的參考。該參考是在創建類時創建的,而不是在稍后super被呼叫時按名稱查找。因此,您看到的“不正確”行為實際上是預期行為。要更改類b視為其基類的內容,您也需要重新定義b。
uj5u.com熱心網友回復:
我認為這是因為類 b 仍然繼承自您定義的原始類 a。您可以通過列印出 a 類的 id(a) id(b. bases [0])來檢查這一點
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/372419.html
