我有以下内容:
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
我如何正确地将键/值参数的字典传递给 kwargs?
请您参考如下方法:
使用 **kw call convention :
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'}
