当我初始化类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?
答案 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