我正在编写一个程序,它将对向量做一些事情。现在我可以打印出一个向量,但如果需要的话,我希望能够使用我的add函数添加到向量中。然而,它似乎不起作用。它说它只能接受一个参数,但即使我只输入了一个参数,也给出了两个参数。有什么建议吗?
class Vec:
def __init__(self, length = 0):
self.vector = [0]*length
def __str__(self):
return '[{}]'.format(', '.join(str(i) for i in self.vector))
def __len__(self):
return len(self.vector)
def extd(self, newLen):
self.vector.append([0]*newLen)
return (', '.join(str(j) for j in self.vector))发布于 2013-12-03 10:44:23
您需要将self作为您的第一个参数进行传递。
def add(self, newLen):否则,传递的不是newLen,而是指向实例本身的指针,因此会出现错误。
通过添加self,自动传递的第一个参数是实例,第二个参数是newLen。
请参阅此控制台会话,例如:
>>> class A:
def pass_parameters(first_param, second_param=None):
print(first_param, second_param)
>>> a = A()
>>> a.pass_parameters()
<__main__.A object at 0x000000000322BBE0> None
>>> a.pass_parameters('parameter')
<__main__.A object at 0x000000000322BBE0> parameter希望这能有所帮助!
发布于 2013-12-03 10:43:57
您的add方法缺少self参数。它应该看起来像这样:
def add(self, newLen):
self.vector.append(newLen)
return '[{}]'.format(', '.join(str(i) for i in self.vector))在Python中,当您调用实例方法时,会自动将实例作为第一个参数(通常命名为self)传递给您。
示例:
v = Vec()
v.add(4) # Essentially calls Vec.add(v, 4)https://stackoverflow.com/questions/20341858
复制相似问题