初始化子类时对超类变量的可访问性



初始化子类时,我正在尝试从其子类访问超类的变量。 我不明白为什么无法直接访问其超类的变量,但可以通过父级的 getter 函数访问它。(它是一个公共变量(

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()

函数返回一个代表超类的代理对象,该对象通过搜索方法提供对超类方法的访问。但是,它不提供对父类中变量的访问权限。这就是super()的工作方式。要在此处访问超类的变量,您可以简单地使用self.age.有关super()工作原理的详细信息,请参阅文档。

最新更新