我尝试继承2个类作为子类中的父类,这2个类都具有不同的类变量class A具有a、b,而class B具有c、d、e,它们是**class AB(A,B)**的父类。现在我想创建AB类对象,但在尝试创建AB类对象时,我不明白如何传递值
class A:
def __init__(self,a,b):
self.a = a
self.b = b
def testa(self):
print('inside A')
class B:
def __init__(self,c,d,e):
self.c = c
self.d = d
self.e = e
def testb(self):
print('inside B')
class AB(A,B):
def __init__(self,*args):
A.__init__(self,*args)
B.__init__(self,*args)
obj = AB(1,2,3)#这是抛出错误
2条答案
按热度按时间os8fio9y1#
发生这种情况是因为您使用 *args参数调用了A和B类的
__init__
方法,这会导致所有参数作为单个元组传递。要解决此问题,您可以在AB类中定义__init__
方法,并将变量的值作为单独的参数接受,如下所示:现在你可以像这样传递值:
qyswt5oh2#
*args
将始终解包所有值。由于A
只需要2个值,因此在传递3个值时将抛出错误。要将args
限制为2个元素,如果要将前2个元素传递给A
,请使用slicing [:2]
因此,您的
AB
的init
应该如下所示:此外,您的方法
testa
和testb
会遇到错误,因为它们缺少self
,而self
总是传递给示例的方法。只需将
self
添加到这两个方法中即可避免TypeError