[英]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.