Python“只需1个位置参数(2个给定)”

时间:2013-11-24 23:20:10

标签: python keyword

我想保存在local中传递的关键字参数,稍后将它们传递给另一个方法,然后我有这个错误。我能理解为什么我的代码出现了这个错误,下面是我的代码。

class A():

    def testA(self):
        self.conf = dict(security='BHP')
        self.client = B('FE')
        self.client.addConfigure(**self.conf)

}

class B(threading.Thread):

    def __init__(self, name):
        threading.Thread.__init__(self)
        self.ServerProxy = None

    def run(self):
        if self.flag == 'X':
            self.ServerProxy.runX(self.para)
        elif self.flag == 'Y':
            self.ServerProxy.runY(self.para)
        elif self.flag == 'Z':
            self.ServerProxy.runZ(self.para)


    def addConfigure(self, **kwargs):
        self.para = kwargs
}

runY在其他类

中定义
def runY(self, **kwargs):

为什么错误弹出

<Fault 1: "<class 'TypeError'>:runY() takes exactly 1 positional argument (2 given)">

1 个答案:

答案 0 :(得分:0)

ServerProxy是一个实例 您将self.para作为参数传递

runY传递了这些参数:

 runY(<server_proxy_instance>, <self.para>):

但定义如下

runY(self, **kwargs):

当你将self.para推入**kw时,应该给>>> def foo(x, **kw): ... pass ... >>> foo("bar", "baz") Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: foo() takes 1 positional argument but 2 were given 提供什么名称(密钥)?

仅使用常规功能的简化版

{{1}}