2

我有以下内容:

class Foo:
        def __init__(self, **kwargs):
                print kwargs

settings = {foo:"bar"}
f = Foo(settings)

这会产生一个错误:

Traceback (most recent call last):
  File "example.py", line 12, in <module>
    settings = {foo:"bar"}
NameError: name 'foo' is not defined

如何正确地将键/值 args 的字典传递给 kwargs?

4

1 回答 1

8

使用**kw调用约定

f = Foo(**settings)

这适用于任何采用关键字参数的可调用对象:

def foo(spam='eggs', bar=None):
    return spam, bar

arguments = {'spam': 'ham', 'bar': 'baz'}
print foo(**arguments)

或者您可以使用关键字参数调用该函数:

f = Foo(foo="bar")
foo(spam='ham', bar='baz')

您的错误无关紧要,您没有定义foo,您可能打算将其设为字符串:

settings = {'foo': 'bar'}
于 2013-01-15T17:17:25.190 回答