如果我有一个类...class MyClass: def method(arg): print(arg)...我用它创建一个对象...my_object = MyClass()...我在其上调用 method(\'foo\') 就像这样......
如果我有一堂课...
class MyClass:
def method(arg):
print(arg)
...我用它来创建一个对象...
my_object = MyClass()
... 我 method("foo")
这样称呼它...
>>> my_object.method("foo")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: method() takes exactly 1 positional argument (2 given)
...为什么 Python 告诉我我给了它两个参数,而我只给了一个?
此问题也可能是由于未能 将关键字参数传递 给函数而导致的。
例如,给定一个定义如下的方法:
def create_properties_frame(self, parent, **kwargs):
像这样的调用:
self.create_properties_frame(frame, kw_gsp)
将导致 TypeError: create_properties_frame() takes 2 positional arguments but 3 were given
,因为 kw_gsp
字典被视为位置参数而不是被解包成单独的关键字参数。
解决方案是添加 **
以下参数:
self.create_properties_frame(frame, **kw_gsp)