首页 > 解决方案 > 在 Python 中创建对象的副本而不使用 deepcopy

问题描述

我一直在研究如何改进当前使用 copy.deepcopy() 函数的 Python 类的复制操作的运行时:

def Foo(object):

    ...

    copy_method(self):
         return copy.deepcopy(self)

该类不继承自任何其他类。因此,我正在考虑从运行时角度来看效率更高的上述替代方案,但让我怀疑是否会发生任何内存问题,因为上面提到的“Foo”类没有工厂或 ObjectManger:

    @classmethod
    new_instance(cls):
        return cls.__new__(cls)

    copy_method(self):
        new = self.new_instance()
        new.__dict__.update(self.__dict__)
        return new 

这个实现是一个糟糕的主意吗?我了解 deepcopy() 对具有复杂结构的类等的效用,但是考虑到 Foo 类的简单结构,这种建议的方法要有效得多。或者这是一个可怕的错误,会导致垃圾收集和内存管理问题?任何见解将不胜感激。

标签: pythonclassmemorygarbage-collectioncopy

解决方案


推荐阅读