为什么为什么没有在派生类的实例中初始化继承的类实例属性而收到错误消息?

时间:2019-09-09 19:40:20

标签: python python-3.x inheritance

当我初始化类B的实例时,它是否会因为未尝试为类A的 init 方法提供x属性的值而引发错误?如果我不希望给x赋值会引发错误怎么办?

示例:

class A:

    def __init__(self, x):
        self.x = x

class B(A):

    def __init__(self, y):
        self.y = y

z = B(4) #Shouldn't I be getting an error for not attempting to 
         #initialize x from the base class?

1 个答案:

答案 0 :(得分:2)

不。 您正在做的事情是初始化y,因为在B类的 init 中,您没有调用父母的构造函数

super.__init__()

如果您要同时使用B中的x,y和必须从B中初始化x,则应使用以下方法:

class A:
    def __init__(self, x):
        self.x = x

class B(A):  
    def __init__(self, x, y):
        super().__init__(x)
        self.y = y