首页 > 解决方案 > 如何在python中复制未初始化的类

问题描述

我有这门课

class TestEvent(object)
    value = None

我想获得此类的副本,因此不会被引用,但是当我尝试使用复制库时,始终会引用变量:

>>> clsOne = TestEvent
>>> clsTwo = copy.deepcopy(TestEvent)
>>> clsOne.value = "hello motto"
>>> clsTwo.value
"hello motto"

情况也是如此copy.copy。有人可以告诉我如何获得这门课的副本吗?

标签: pythonpython-3.xclassdeep-copy

解决方案


copy.copy()当你通过一个类时,朋友们将返回不变的值。

您可以type()改用:

# shallow copy of the namespace
new_cls = type(cls.__name__, cls.__bases__, dict(cls.__dict__))

或者:

# deep copy of the namespace
new_cls = type(cls.__name__, cls.__bases__, copy.deepcopy(dict(cls.__dict__)))

推荐阅读