我能知道我的python继承不起作用的原因吗



为了按类管理变量,我尝试使用继承编写python代码。但是,我的池代码不起作用。

实践.py

class Parents_A:
def __init__(self, *args):
self.A_a = 0
self.A_b = np.array([])
if args:
self.set(*args)
@property
def As(self):
return self.A_a
@property
def bs0(self) -> float:
return self.A_b[0]
@property
def bs1(self) -> float:
return self.A_b[1]
def set(self, A_a : float, A_b : np.ndarray):
self.A_a = A_a 
self.A_b = A_b 
print('Setted!')

class Parents_B:
def __init__(self, B_a, B_b):
self.B_a = B_a
self.B_b = B_b
class Child(Parents_B, Parents_A):
def __init__(self, B_a, B_b, Parents_A):
super().__init__(B_a, B_b, Parents_A)
self.Iwant = Parents_A.As

主.py

if __name__ == '__main__':
Data = Practice.Parents_A(1, ([0.9, 1.1]))
calculator = Practice.Child(2, 3, Data)

结果在这里:

TypeError: __init__() takes 3 positional arguments but 4 were given

为什么这个代码不起作用?

多重继承是一件有风险的事情。

class Child(Parents_B, Parents_A):
def __init__(self, B_a, B_b, Parents_A):
super().__init__(B_a, B_b, Parents_A)
self.Iwant = Parents_A.As

这里的super()将采用Parents_Binit方法,该方法有两个(三个包括self(。

既然您将Parents_A作为参数传递,那么为什么要从Parents_A继承呢?您可以使用Parents_A中的方法。

多重继承的目的是什么??

您从Parents_B和Parents_A继承Child类,但顺序很重要。这意味着Child类从第一个类(Parents_B(中获取init方法。Parents_B init方法接受2个参数(B_a,B_B(,但在Child类的超级方法中,您提供了3个参数(a_a,B_B,Parents_a(。

最新更新