참조 할 때 객체의 새 복사본을 만들려면 클래스가 필요합니다. 예를 들어호출 할 때 내 Class '객체를 복사하는 방법 (예 : 반복 할 때)
:
obj1 = MyClass(1,2)
obj2 = obj1
obj2.1st_att = 5
>>> print obj1
(5,2)
내가 obj2보다하는으로 obj1가 연결되지 않은 유지하려는
참조 할 때 객체의 새 복사본을 만들려면 클래스가 필요합니다. 예를 들어호출 할 때 내 Class '객체를 복사하는 방법 (예 : 반복 할 때)
:
obj1 = MyClass(1,2)
obj2 = obj1
obj2.1st_att = 5
>>> print obj1
(5,2)
내가 obj2보다하는으로 obj1가 연결되지 않은 유지하려는
파이썬은 다른 변수에 할당 할 때마다 int 나 float의 사본을 만들지 않습니다. 것은 그들이 변경할 수 없다는 것입니다; int
에는 변경할 수있는 것이 없으므로 많은 변수를 할당해도 아무런 놀라움을 얻지 못할 것입니다.
obj2.1st_att = 5
을 사용하면 개체의 특성을 명시 적으로 수정하고 있습니다. int
의 아날로그 작업은 없습니다. 이 조작에 의해 오브젝트가 변경되어,이 변경이 그 오브젝트에의 참조를 보관 유지하고있는 다른 누구에게나 표시 될 것이 예상됩니다.
어떤 식 으로든 문제를 해결하려고해서는 안됩니다. 예상치 못한 많은 버그가 발생하거나 놀라운 동작을 유발할 수 있습니다. 객체의 복사본을 만드는 것은 명시 적으로 취해야 할 행동입니다. 그것에 익숙해.
나는 알고있다. .. 당신은 나를 틀리게하고있다 - 나는 나의 학급의 모든 인스턴스를 사본으로 원한다. 또는 본질적으로 클래스 클래스의 객체를 – Rocobop
으로 변경하고 싶지만 속성에 대한 변경을 차단하는 방법에 대한 답변 만 있었고 문제가 해결되지 않았습니다. – Rocobop
음,'obj2.1st_att = 5'에 할당하고 싶습니까? 객체가 지원해야하는 작업입니까? 아니면 누군가가 객체에 어떤 것을 할당하려 할 때 오류가 발생하기를 원하나요? 이는 자동으로 복사본을 만드는 것과는 다른 논의입니다. – deceze
개체를 참조 할 때마다 개체의 복사본을 자동으로 만드는 방법을 묻고 있습니까? 그것은 Float 또는 Int가 어떻게 작동하는지 전혀 아닙니다. –
중복 사본 : [이 답변은 내 답변을 참조하십시오.] (https://stackoverflow.com/questions/47871806/how-do-i-change-a-variable-inside-a-variable/47872098 # 47872098) – IMCoins
@ScottHunter 그럼 어떻게 작동합니까? 기본적으로 객체가 변경되지 않기를 원하므로 새로운 객체에 대한 변경 사항을 반복하거나 참조 할 때 원본과 연결되지 않습니다. – Rocobop