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

キー/値引数のdictを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 に答える