如何在python中复制对象时跳过初始化?

时间:2012-03-26 07:04:20

标签: python initialization copy-constructor

我想为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__的信息,但大多数都是指工厂和看似无关的东西,所以我仍然不清楚如何跳过初始化。

1 个答案:

答案 0 :(得分:2)

我建议在__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