简单的问题:如何合并Python的SimpleNamespace?
看起来没有办法通过像a.update(b)or这样的简单命令来做到这一点a | b。事实上,我什至还没有找到一种方法来系统地访问 SimpleNamespace 的所有属性。
有线索吗?
每个SimpleNamespace都有一个__dict__插槽,可以访问其实际属性。**- 将__dict__多个SimpleNamespaces 解压成一个新的,SimpleNamespace有效地合并它们。
>>> from types import SimpleNamespace
>>> first = SimpleNamespace(a=0, b=1, c=2)
>>> second = SimpleNamespace(x=0, y=1, z=2)
>>> SimpleNamespace(**first.__dict__, **second.__dict__)
namespace(a=0, b=1, c=2, x=0, y=1, z=2)
Run Code Online (Sandbox Code Playgroud)
请注意,通过TypeError这种方式合并具有重叠属性的命名空间。
要合并可能具有重叠键的名称空间,请使用中间字典并再次解压它 ( **{...})。后面的命名空间的值优先于此方案。
>>> first = SimpleNamespace(a=0, b=1, c=2)
>>> second = SimpleNamespace(c=0, d=1, e=2)
>>> SimpleNamespace(**{**first.__dict__, **second.__dict__})
namespace(a=0, b=1, c=0, d=1, e=2)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1153 次 |
| 最近记录: |