我对python的“类”还不熟悉。我用python创建了以下类。这个类的目标是,如果传递一个数字列表,如果两个数字的和是50,它将返回这些数字在列表中的位置
from itertools import combinations
class numList(object):
def findComb(self):
a = []
b = []
for comb in combinations(self, 2):
a.append(comb)
for i in range(1, len(a)):
if sum(a[i]) == 50:
b.append(a[i])
return b
c = numList()
c.findComb([10,20,10,40,50,60,70])
但是当我试图执行它时,我得到了以下错误:
TypeError: findComb() takes 1 positional argument but 2 were given
请让我知道我在哪里犯错
谢谢你
类中的每个方法都将类本身的实例作为位置输入,除非添加@staticmethod decorator
因此您收到错误是因为函数
findComb
作为输入接收:这应该澄清你收到的错误
您可以通过两种方式修复它:
将输入列表指定给类的属性,然后在函数中使用该属性:
将findComb定义为staticmethod,以便它只使用您传递的参数(而不使用实例作为第一个参数):
根据设计,每个类函数的第一个参数总是对类的当前实例的引用(总是命名为
self
)当您将
findComb
定义为只接受一个(self
)时,您正在用一个附加参数调用它应该是
函数实现中对
self
的所有引用都需要相应地更新才能使用myList
相关问题 更多 >
编程相关推荐