TypeError: wrong number of arguments when passing list to Python function
本问题已经有最佳答案,请猛点这里访问。
我有一个python父类,它包含一个传递列表的函数,然后检查其中是否包含特定的元素(键):
1 2 3 4 5 6 7 8 | class Output(): def __init__(self, data): raise NotImplementedError def checkCal(self, options): if"calendar" in options: #do some stuff |
然后有另一个类继承它:
1 2 3 4 5 6 7 8 9 10 | import output class CSVOutput(output.Output): # blah blah blah def theFunction(self, data): data["first"] ="hello" data["second"] ="calendar" self.checkCal(self, data) |
但是,最后一行产生一个
1 | TypeError: checkCal() takes exactly 2 arguments (3 given) |
我假设给出的参数数量是三,因为一个是
在实例上调用方法时,不需要包括
1 | self.checkCal(data) |
够了。
每当引用实例上的函数名时,python就会生成一个方法对象,该对象将调用作为第一个参数传入实例中的原始函数。有关所有技术细节,请参阅描述符协议howto。