具有__init__函数的 Python 类多重继承



我希望每个类都有不同或相同的变量,并继承最终类,如下所示

class a(object):
def __init__(self, x, y):
self.x = x
self.y = y
def add(self):
return self.x + self.y
class b(object):
def __init__(self, u, v):
self.u = u
self.v = v
def mul(self):
return self.u*self.v
class c(a, b):
def __init__(self,x,y,u,v,w):
super(c,self).__init__(x,y,u,v,w)
self.w = w
def div(self):
return (self.x+self.y+self.u+self.v)/self.w

错误为:

ob = c(1,2,3,4,5)
Traceback (most recent call last):
File "<ipython-input-20-0c1a3250f4a1>", line 1, in <module>
ob = c(1,2,3,4,5)
File "<ipython-input-19-5734ec980138>", line 20, in __init__
super(c,self).__init__(x,y,u,v,w)
TypeError: __init__() takes 3 positional arguments but 6 were given

如何修复错误?

我不确定这是否是好的做法,但您可以通过单独调用每个超类的__init__()来使其工作。

class a(object):
def __init__(self, x, y):
self.x = x
self.y = y
def add(self):
return self.x + self.y
class b(object):
def __init__(self, u, v):
self.u = u
self.v = v
def mul(self):
return self.u*self.v
class c(a, b):
def __init__(self,x,y,u,v,w):
a.__init__(self, x, y)
b.__init__(self, u, v)
self.w = w
def div(self):
return (self.x+self.y+self.u+self.v)/self.w
k = c(1, 2, 3, 4, 5)
print(k.div())
>>>2.0
print(k.add())
>>>3
print(k.mul())
>>>12

最新更新