【问题标题】:How to skip the initialization when copying objects in python? [duplicate]在python中复制对象时如何跳过初始化? [复制]
【发布时间】:2012-04-09 17:01:01
【问题描述】:

我想为类 A 实现我自己的复制方法,如下所示:

class A(object):
    def __init__(self):
        self.field1 = generate_a_list_of_ints()
    def __copy__(self):
        result = A()
        result.fiel1[:] = self.field1[:]
        return result

上面代码的问题是,当复制一个A对象时,即使不需要获取初始值,也会调用初始化代码。

如何在不运行初始化代码的情况下复制 field1?我查找了有关 __new__ 的信息,但其中大部分是指工厂和似乎无关的东西,所以我仍然不清楚如何跳过初始化。

【问题讨论】:

    标签: python initialization copy-constructor


    【解决方案1】:

    我建议在您的 __init__() 方法中使用可选参数,如下所示:

    class A(object):
        def __init__(self, init=True):
            if init:
                self.field1 = generate_a_list_of_ints()
        def __copy__(self):
            result = A(init=False)
            result.fiel1[:] = self.field1[:]
            return result
    

    【讨论】:

    • 是的,这是个好主意。谢谢你。以防万一,我会再等一段时间再接受。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-12
    • 1970-01-01
    • 2015-01-05
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多