kwargs到python实例方法

时间:2015-08-07 17:30:36

标签: python

我需要将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)

1 个答案:

答案 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中阅读有关参数解包的内容。