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