私の単純なコードがこのように動作する理由を理解するのは苦労しています。私は引数として配列をとる2つのインスタンスaとbを作成します。次にインスタンス配列の1つを変更するメソッドを定義しますが、両方とも変更されます。なぜこのようなことが起こるのか、どうすれば他のインスタンスを変更する方法を避けることができますか?メソッドはどちらか一方にしか適用されない場合でも両方のインスタンスを変更します
import numpy as np
class Test:
def __init__(self, arg):
self.arg=arg
def change(self,i,j,new):
self.arg[i][j]=new
array=np.array([[11,12,13]])
a=Test(array)
b=Test(array)
#prints the same as expected
print(a.arg)
print(b.arg)
print()
a.change(0,0,3)
#still prints the same, even though I did
#not change b.arg
print(a.arg)
print(b.arg)
あなたは両方のコンストラクタに同じ配列*を渡しました...なぜそれが変わるとは思わなかったのですか? –