python-3.x 如何从dict初始化SimpleNamespace [重复]

thigvfpy  于 2022-12-05  发布在  Python
关注(0)|答案(1)|浏览(141)

此问题在此处已有答案

Passing a dictionary to a function as keyword parameters(4个答案)
四年前就关门了。
我相信这一定很简单,但我找不到答案。
我有一本字典:

d = {'a': 1, 'b':2}

我想通过点符号访问它,例如:d.a
SimpleNamespace就是为此而设计的,但是我不能直接将dict传递到SimpleNamespace构造函数中。TypeError: no positional arguments expected
如何从字典初始化SimpleNamespace?

n53p2ov0

n53p2ov01#

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

SimpleNamespace(**d)

这会将d中的每个键值对作为单独的关键字参数应用。
相反,Python文档中所示的类定义的__init__方法中的**kwargs参数定义将传递给该类的所有关键字参数再次捕获到一个字典中。
演示:

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

相关问题