我想從超類的方法中訪問在子類的構造函數中設置的自變量。Python:在超類的未覆蓋方法中從子類訪問變量
class A(object):
def __init__(self):
self.a = "I'm the class A."
def getA(self):
return self.a
class B(A):
def __init__(self):
super(B, self).__init__()
self.a = "I'm the class B."
x = B()
print(x.getA())
結果總是「A」。爲什麼我不能在子類構造函數中覆蓋超級變量?我對Python的繼承是新手,我認爲它在Java中的工作就像我試過的一樣。
編輯:好的,謝謝你的意見。當然,這確實有效。這只是一個簡短的草圖來演示,我正在嘗試做什麼。原始代碼更復雜,我錯過了一些自我。對我來說還是有點困惑,你必須每次寫自己,因爲它在Java中不是必需的。
除了缺少傳遞給'getA'的'self'之外,我認爲你的代碼可以像你期望的那樣工作......(它打印出「我是B類」)。 – mgilson
如上所述,您發佈的代碼不起作用。它應該是'def getA(self):'。請修復它,然後運行您的示例。它打印出'我是B類'。我們複製/粘貼測試,所以你也可以! – tdelaney