deepcopy中断用户定义类中的引用关系

2024-10-05 21:57:43 发布

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

我定义了一个类,其中有一个引用关系。你知道吗

然后我创建一个实例,在复制.deepcopy在此实例中,引用关系消失,例如:

import numpy as np
class foo(object):
    def __init__(self):
        self.c = np.array([[1,2],[3,4]])
        self.a = self.c[1,:]

ff0 = foo()
ff1 = copy.deepcopy(ff0)

ff1.c +=np.array([10,10])
print(ff1.a)

ff0.c +=np.array([10,10])
print(ff0.a)

输出:

[3 4]
[13 14]

但我想看到这样的结果:

[13 14]
[13 14]

有人能帮我维持这段关系吗?你知道吗

提前谢谢~


Tags: 实例importselfnumpy定义foo关系as
1条回答
网友
1楼 · 发布于 2024-10-05 21:57:43

我绕了一圈来解决这个问题:

import numpy as np
class foo(object):
    def __init__(self):
        self.c = np.array([[1,2],[3,4]])
        self.a = self.c[1,:]
    def copy(self):
        cp = copy.deepcopy(self)
        cp.a = cp.c[1,:]
        return cp

ff0 = foo()
ff1 = ff0.copy()

ff1.c +=np.array([10,10])
print(ff1.a)

ff0.c +=np.array([10,10])
print(ff0.a)

输出:

[13 14]
[13 14]

相关问题 更多 >