간단한 코드가 이와 같이 작동하는 이유를 이해하는 데 어려움을 겪고 있습니다. 인수로 배열을 취하는 2 개의 인스턴스 a와 b를 만듭니다. 그런 다음 인스턴스 배열 중 하나를 변경하는 메서드를 정의하지만 둘 다 변경됩니다. 왜 이런 일이 벌어 지는지 그리고 어떻게 다른 인스턴스를 변경하는 방법을 피할 수 있습니까?두 인스턴스 중 하나만 적용한 경우에도 메서드가 두 인스턴스를 변경합니다.
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)
두 생성자에 동일한 배열 *을 전달했는데 왜 변경되지 않을 것이라고 예상 했습니까? –