Python:在超类的非重写方法中从子类访问变量

时间:2016-11-21 03:42:43

标签: python inheritance

我想从超类中的方法访问自变量,该变量在子类的构造函数中设置。

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中没有必要。

1 个答案:

答案 0 :(得分:1)

我无法重现你的问题这正确输出“我是B班”。因为它应该是,你可以覆盖子类中的变量。

此外,def getA()应为def getA(self)

对于super,您可以像使用它一样使用它,但如果在Python 3.x上执行super().__init__()则更简单。同样,如果在3.x上,如果这些是新的样式类(取决于Python版本),则不需要object