首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在python中复制构造函数?

在python中复制构造函数?
EN

Stack Overflow用户
提问于 2009-08-06 20:16:48
回答 7查看 78.2K关注 0票数 107

python中有复制构造函数吗?如果不是,我该怎么做才能达到类似的效果呢?

情况是,我正在使用一个库,并且我已经扩展了其中一个具有额外功能的类,并且我希望能够将从库中获得的对象转换为我自己的类的实例。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-08-06 20:21:34

我觉得你想要copy module

代码语言:javascript
复制
import copy

x = copy.copy(y)        # make a shallow copy of y
x = copy.deepcopy(y)    # make a deep copy of y

控制复制的方式与控制pickle的方式大致相同。

票数 80
EN

Stack Overflow用户

发布于 2013-04-17 04:43:33

在python中,可以使用默认参数定义复制构造函数。假设您希望普通构造函数运行函数non_copy_constructor(self),而复制构造函数应该运行copy_constructor(self, orig)。然后,您可以执行以下操作:

代码语言:javascript
复制
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
票数 35
EN

Stack Overflow用户

发布于 2014-12-12 18:37:17

我通常实现的复制构造函数的一个简单示例:

代码语言:javascript
复制
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)
票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1241148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档