我有一个带有一些属性字段的类,它是一个 numpy 数组。该类具有生成同一类的新实例的能力。现在我的问题是这样创建的所有实例似乎都指向同一个字段属性。因此,当给定代码的预期输出为:
[0, 0]
[1, 0]
[0, 2]
它实际上给出了:
[1, 2]
[1, 2]
[1, 2]
并且当我之后更改 a.field 中的条目时,该条目在所有实例的字段属性中都发生了更改
有人知道如何解决这个问题或者我在这里理解错了吗?
import numpy as np
class A:
def __init__(self, field=np.zeros(2)):
self.field=field
def setField(self, c, index):
if index<len(self.field):
self.field[index]=c
def multiply(self):
new_A=np.empty(2, dtype=object)
for n in range(0, 2, 1):
new_A[n]=A()
new_A[n].setField(n+1, n)
return new_A
a=A()
subs=a.multiply()
print a.field
print subs[0].field
print subs[1].field