我想从超类中的方法访问自变量,该变量在子类的构造函数中设置。
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中没有必要。
答案 0 :(得分:1)
我无法重现你的问题这正确输出“我是B班”。因为它应该是,你可以覆盖子类中的变量。
此外,def getA()
应为def getA(self)
。
对于super
,您可以像使用它一样使用它,但如果在Python 3.x上执行super().__init__()
则更简单。同样,如果在3.x上,如果这些是新的样式类(取决于Python版本),则不需要object
。