gpt4 book ai didi

python - 如何在 Python 3.3 中复制自定义类的实例?

转载 作者:太空狗 更新时间:2023-10-29 23:54:59 27 4
gpt4 key购买 nike

我正在尝试在 Python 3.3 中复制自定义类的实例,类似于 dict.copy()list.copy() 的工作方式。我该怎么做?

这是我的自定义类的示例:

class CustomClass(object): # Custom class example
def __init__(self, thing):
self.thing = thing

最佳答案

一般来说,您可以使用 copy module生成 Python 对象的副本。

  • copy.copy() 将生成一个副本;创建了一个新实例,但所有属性都被简单地复制了过来。如果您的任何属性是可变的并且您改变了这些对象,您将看到这些更改反射(reflect)在两个对象上。

  • copy.deepcopy() 将递归地生成一个副本;任何可变对象本身都会被克隆。

如果您的类实现了 __copy__ 方法,它将用于创建对象的浅拷贝;返回一个新实例,其属性被复制并根据需要进行更改。

同样的,你可以实现一个__deepcopy__方法来实现自定义的深拷贝方法;它将通过 memo 状态,将其传递给递归 copy.deepcopy() 调用。

请注意,您不能使用它来复制类对象。类应该是单例;在这种情况下,您不需要创建副本。您可以使用子类化 或类工厂函数来生成不同的类对象。

关于python - 如何在 Python 3.3 中复制自定义类的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29398336/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com