3

就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)

或者,使用复制():

from copy import copy
obj = copy(other_object)
4

1 回答 1

5

考虑到模块的文档,事情非常简单copy

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

因此,如果您觉得标准copy()deepcopy()工作缓慢或有其他问题,只需执行上述方法之一即可。这样,您将坚持众所周知的 Python 对象复制机制,仍然以您希望复制的方式复制对象。

于 2012-12-22T19:34:38.990 回答