python中有复制构造函数吗?如果不是,我该怎么做才能达到类似的效果呢?
情况是,我正在使用一个库,并且我已经扩展了其中一个具有额外功能的类,并且我希望能够将从库中获得的对象转换为我自己的类的实例。
发布于 2009-08-06 20:21:34
我觉得你想要copy module
import copy
x = copy.copy(y) # make a shallow copy of y
x = copy.deepcopy(y) # make a deep copy of y
控制复制的方式与控制pickle的方式大致相同。
发布于 2013-04-17 04:43:33
在python中,可以使用默认参数定义复制构造函数。假设您希望普通构造函数运行函数non_copy_constructor(self)
,而复制构造函数应该运行copy_constructor(self, orig)
。然后,您可以执行以下操作:
class Foo:
def __init__(self, orig=None):
if orig is None:
self.non_copy_constructor()
else:
self.copy_constructor(orig)
def non_copy_constructor(self):
# do the non-copy constructor stuff
def copy_constructor(self, orig):
# do the copy constructor
a=Foo() # this will call the non-copy constructor
b=Foo(a) # this will call the copy constructor
发布于 2014-12-12 18:37:17
我通常实现的复制构造函数的一个简单示例:
import copy
class Foo:
def __init__(self, data):
self._data = data
@classmethod
def from_foo(cls, class_instance):
data = copy.deepcopy(class_instance._data) # if deepcopy is necessary
return cls(data)
https://stackoverflow.com/questions/1241148
复制相似问题