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

2024-10-04 05:34:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我想为类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

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

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


Tags: of方法代码selfobjectinitdefresult
1条回答
网友
1楼 · 发布于 2024-10-04 05:34:16

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

相关问题 更多 >