我无法弄清楚我做错了什么。我必须创建一个嵌套列表(问题的可能解决方案),所以我创建了一个类,它将解决方案附加到现有解决方案列表中(因为每个解决方案一次只计算一个)
此功能正常工作:
def appendList(list):
#print list
list2.append(list)
x =0
while x < 10:
x = x+1
one = "one"
two = "two"
appendList([(one), (two)])
print list2
结果为:
[['one', 'two'], ['one', 'two'], ['one', 'two'], ['one', 'two'], ['one', 'two'], ['one', 'two'], ['one', 'two'], ['one', 'two'], ['one', 'two'], ['one', 'two']]
但是当我把这个完全相同的函数放在一个类中时,我得到一个错误说:
TypeError: appendList() takes exactly 1 argument (2 given)
以下是课程以及我如何称呼它:
class SolutionsAppendList: list2 = [] def appendList(list): #print list list2.append(list)
appendList.appendList([('one'), ('two')])
我确定我犯了一个非常基本的错误,但我似乎无法弄清楚为什么,因为我在课堂上使用相同的功能。
任何建议/建议都会很棒。 感谢
答案 0 :(得分:2)
使用类实例时,特殊变量self
始终作为方法调用的第一个参数传递。您需要修改函数声明以适应这一点:
class SolutionList:
def appendList(self, list):
#rest of your function here.
答案 1 :(得分:2)
由于您在这里处理课程,因此使用instance variables
非常重要。可以使用self
关键字访问这些内容。如果你正在处理类方法,一定要做出他们的第一个参数self
。所以,修改......
class SolutionsAppendList:
def __init__(self):
self.list = []
def appendList(self, list):
#print list
self.list.append(list)
这有什么好处,你不再需要list2
。实例变量(self.list
)。与局部变量(您传递给list
方法的appendList()
)不同。编辑:我还添加了一个__init__
方法,一旦创建SolutionsAppendList
对象的实例就会调用它。在我的第一个回复中,我忽略了self.*
不可用的事实在方法之外。这是编辑过的代码(感谢大卫)。
答案 2 :(得分:1)
应该是:
class SolutionsAppendList:
list2 = []
def appendList(self, list):
#print list
self.list2.append(list)
类方法应始终将self(引用实例)作为第一个参数。