numpy 配列である Attribute フィールドを持つクラスがあります。クラスには、同じクラスの新しいインスタンスを生成する能力があります。今私の問題は、このように作成されたすべてのインスタンスが同じフィールド属性を指しているように見えることです。したがって、指定されたコードの期待される出力が次の場合:
[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