如何从dict初始化SimpleNamespace

Mvd*_*vdD 2 python dictionary python-3.x

我相信这一定很简单,但我找不到答案.

我有一个字典,如:

d = {'a': 1, 'b':2}
Run Code Online (Sandbox Code Playgroud)

我想通过点表示法来访问它,例如: d.a

SimpleNamespace是为此而设计的,但我不能将dict传递给SimpleNamespace构造函数.我收到错误:TypeError: no positional arguments expected

如何从字典初始化SimpleNamespace?

Mar*_*ers 12

使用**kwargs调用语法传入字典,将字典解压缩到单独的参数中:

SimpleNamespace(**d)
Run Code Online (Sandbox Code Playgroud)

这会将每个键值对d作为单独的关键字参数应用.

相反地,密切相关型号**kwargs参数定义__init__类定义的方法Python文档中显示捕获传递给类成单个字典再次所有关键字参数.

演示:

>>> from types import SimpleNamespace
>>> d = {'a': 1, 'b':2}
>>> sn = SimpleNamespace(**d)
>>> sn
namespace(a=1, b=2)
>>> sn.a
1
Run Code Online (Sandbox Code Playgroud)