实现“复制构造函数”与使用copy()

时间:2012-12-22 14:34:52

标签: python

根据python约定+速度,通常首选什么?类似的东西:

class Object(object):
    def __init__(self, other_object=None):
        if other_object:
            self.value = other_object.value
        else:
            self.value = something

然后

obj = Object(other_object)

或使用copy():

from copy import copy
obj = copy(other_object)

1 个答案:

答案 0 :(得分:5)

考虑到copy模块的文档:

,事情非常简单
  

为了让一个类定义自己的副本实现,它可以   定义特殊方法__copy__()__deepcopy__()。前者是   调用实现浅拷贝操作;没有额外的   参数传递。调用后者来实现深层复制   操作;它传递了一个参数,即备忘录字典。如果   __deepcopy__()实现需要制作组件的深层副本,它应该使用组件调用deepcopy()函数   作为第一个参数,备忘录字典作为第二个参数。

因此,如果您认为标准copy()deepcopy()工作缓慢或存在其他问题,请执行上述方法之一。这样你就会坚持使用众所周知的Python对象复制机制,仍然按照你想要的方式复制对象。