如何“正确”复制一个types.SimpleNamespace对象?

And*_*sen 5 python namespaces copy python-3.x

我期望能够做类似的事情:

a = SimpleNamespace(x='test')
b = a.copy()
Run Code Online (Sandbox Code Playgroud)

或许:

b = SimpleNamespace(a)
Run Code Online (Sandbox Code Playgroud)

我当前的解决方案似乎很好用

b = SimpleNamespace(**a.__dict__)
Run Code Online (Sandbox Code Playgroud)

但是它看起来有些古怪。还有更“正确”的方法吗?

我不需要深复制。

小智 3

我想使用 SimpleNamespace 进行深度复制。一种简单易读的方法是使用复制模块。

new_namespace = copy.copy(namespace)
Run Code Online (Sandbox Code Playgroud)

或者

new_namespace = copy.deepcopy(namespace)
Run Code Online (Sandbox Code Playgroud)

取决于你的需要。