簡體   English   中英

初始化子類時對超類變量的可訪問性

[英]Accessibility to variable of superclass when initializing the subclass

我試圖在初始化子類時從其子類訪問超類的變量。 我不明白為什么不能直接訪問其超類的變量,但可以通過父級的 getter function 訪問它。 (它是一個公共變量)

class Parent(object):
    def __init__(self, age=22):
        self.age = age

    def get_age(self):
        return self.age


class Child(Parent):
    def __init__(self):
        super().__init__()
      #  self.age = super().age - 15  # This line causes error
        self.age = super().get_age() - 15 # The line works


def main():
    c = Child()
    print("The child's age is " + str(c.get_age()))


if __name__ == '__main__':
    main()

super() function 返回一個代理 object 代表超類,通過搜索方法可以訪問超類的方法。 但是它不能訪問父 class 中的變量。 這就是super()的工作原理。 要在此處訪問超類的變量,您可以簡單地使用self.age 有關super()如何工作的更多信息,請參閱文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM