我需要将kwargs传递给Python实例方法,但下面会出现以下错误。
class test(object):
def __init__(self):
print 'Initializaed'
def testmethod(self,**kwargs):
for each in kwargs:
print each
x = test()
x.testmethod({"name":"mike","age":200})
错误:
Traceback (most recent call last):
File "C:\Users\AN\workspace\Scratch\Scratch\test.py", line 20, in <module>
x.testmethod({"name":"mike","age":200})
TypeError: testmethod() takes exactly 1 argument (2 given)
答案 0 :(得分:2)
x.testmethod({"name":"mike","age":200})
这会调用带有两个位置参数的testmethod()
- 一个是隐式的(对象实例,即self
),另一个是你给它的字典。
要传递关键字参数,请使用**
运算符将字典解压缩为key=value
对,如下所示:
x.testmethod(**{"name":"mike","age":200})
这会转换为x.testmethod(name='mike', age=200)
,这就是您想要的。您还可以在documentation中阅读有关参数解包的内容。