<p>类中的每个方法都将类本身的实例作为位置输入,除非添加<a href="https://stackoverflow.com/questions/136097/what-is-the-difference-between-staticmethod-and-classmethod-in-python">@staticmethod decorator</a></p>
<p>因此您收到错误是因为函数<code>findComb</code>作为输入接收:</p>
<ol>
<li>实例(默认情况下)</li>
<li>你通过的名单</li>
</ol>
<p>这应该澄清你收到的错误</p>
<p>您可以通过两种方式修复它:</p>
<p>将输入列表指定给类的属性,然后在函数中使用该属性:</p>
<pre><code>class numList(object):
def __init__(self, inp_list):
self.input = inp_list
def findComb(self):
a = []
b = []
for comb in combinations(self.input, 2):
a.append(comb)
for i in range(1, len(a)):
if sum(a[i]) == 50:
b.append(a[i])
return b
c = numList([10,20,10,40,50,60,70])
c.findComb()
</code></pre>
<p>将findComb定义为<a href="https://stackoverflow.com/questions/136097/what-is-the-difference-between-staticmethod-and-classmethod-in-python">staticmethod</a>,以便它只使用您传递的参数(而不使用实例作为第一个参数):</p>
<pre><code>class numList(object):
@staticmethod
def findComb(inp_list):
a = []
b = []
for comb in combinations(inp_list, 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])
</code></pre>