繁体   English   中英

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

[英]How to copy instances of a custom defined class in Python 3.3?

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

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

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

通常,您可以使用copy模块生成Python对象的副本。

  • copy.copy()将产生一个浅表副本; 创建了一个新实例,但是仅复制了所有属性。 如果您的任何属性都是可变的,并且您对这些对象进行了突变,您将看到这些更改都反映在两个对象上。

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

如果您的类实现了__copy__方法,它将用于创建对象的浅表副本; 返回具有复制属性并根据需要更改的属性的新实例。

同样,您可以实现__deepcopy__方法来实现自定义深度复制方法。 它将传递给memo状态,然后将其传递给递归copy.deepcopy()调用。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM