저는 deepcopy 함수와 복사 함수를 가지고 놀았으며 두 함수 모두에서 같은 문제가 발생합니다. 복사본이 적절한 복사본 대신 참조 (또는 포인터) 인 것처럼 보입니다. 파이썬에서 데이터 레코드 (클래스)로 작업 중입니다. 예를 보여 드리겠습니다 :Python copy.deepcopy() 함수가 제대로 작동하지 않습니다.
>>> import copy
>>> class player1:
... age = 23
... score = 1
>>> class player2:
... age = 14
... score = 2
>>> player3 = copy.deepcopy(player1)
저는 매개 변수를 인쇄합니다.
>>> print player1.age, player1.score
23 1
>>> print player2.age, player2.score
14 2
>>> print player3.age, player3.score
23 1
이제 player1 데이터 레코드의 점수 매개 변수가 증가합니다.
>>> player1.score += 3
그리고 결과를 다시 인쇄합니다.
>>> print player1.age, player1.score
23 4
>>> print player2.age, player2.score
14 2
>>> print player3.age, player3.score
23 4
왜 플레이어 3이 변경 되었습니까? 방금 player1이 아닌 player3의 매개 변수가 증가했습니다. 변경할 수없는 대신 변경할 수 있습니다.
미리 감사드립니다. documentation (강조 광산)에서
내가 나이와 점수 클래스 속성되었다는 사실이 관찰 된 행동에 대한 책임이 있음을 동의 ; 만약 player3이 정말로 다른 클래스라면, OP는이 문제를 가지고 있지 않았을 것입니다. 나는 그것들이 인스턴스 속성이어야한다고 동의하지만, 그것은 다른 것이다. – DSM
@DSM : 예, 동의했습니다. 나는 처음에는 이것에 집착했다. 클래스 인스턴스가 전혀 없다는 것을 보지 못했다. 나는 이것을 바로 잡았다. –