我尝试使用组合关系,但我无法访问复合类A: 使用此代码我试图添加到类A的列表中,这是B类中的一个对象。
class B:
def __init__(self,X,Y,Z):
self.X
self.Y
self.Z
def Xreturner(self):
return self.X
def Yreturner(self):
return self.Y
def Zreturner(self):
return self.Z
class A:
def __init(self):
self.lst=[[1,2,3],[3,4,5],]
self.b=B()
def add(self): # trying to add b object to the list
self.lst.append(self.b)
#### TEST####
objA=A()
objA.add(6,7,8)
当我测试时,我收到此错误:
Traceback (most recent call last):
File "home/testXYZ.py", line 28, in <module>
objA.add(6,7,8)
TypeError: add() takes exactly 1 argument (4 given)
请帮我解决这个问题。
答案 0 :(得分:1)
self.X
__init__
方法中的B
语句无效。您需要放置self.X = X
。add()
,但它不会采用任何参数。也许您想要添加参数(就像__init__
X
的{{1}}一样。__init__
的{{1}}(而不是A
)。然后,您可以将它们传递给A
。答案 1 :(得分:0)
首先,您的班级B
初始化程序不正确:
class B:
def __init__(self, x, y, z): # <== should use snake_case for vars
self.x = x
self.y = y
self.z = z
接下来,您的班级A
添加应该创建一个新的B对象并添加到列表中:
def add(self, x, y, z):
new_b = B(x, y z)
self.lst.append(new_b)