1
10 진수 값을 포함하는 클래스를 deepcopy()하는 데 어려움을 겪고 있습니다. 그래서 Decimal 객체 자체를 깊이 복사하려고 시도했지만 실패했습니다. 내가 여기서 오해 한 것은 무엇인가?Decimal() 객체의 파이썬 deepcopy()
from copy import deepcopy
from decimal import Decimal
## Deepcopy an array ##
a = [1,2,3,4]
b = deepcopy(a)
a is b
# False
## Deep copy a Decimal ##
a = Decimal('0.123')
b = deepcopy(a)
a is b
# True
## Deepcopy a class containing a Decimal ##
class A(object):
def __init__(self, dec):
self.myDecimal = Decimal(dec)
a = A('0.123')
b = deepcopy(a)
a is b
# False
a.myDecimal is b.myDecimal
# True
클래스는 복사하지만 십진법 참조는 동일하게 유지됩니다.
아, 고마워! 따라서 두 복사본 중 하나에 대한 새로운 할당은 새 객체를 만들고 다른 참조는 여전히 이전 객체를 가리 킵니다. –
@switch_on : 변경 불가능한 객체를 포함하는 변경 가능한 구조는 여전히 복사되지만 변경 불가능한 객체에 대한 참조 만 공유합니다. 첫 번째 예제는리스트를 deep-copy하여 두 번째리스트 객체를 생성하는데, 그 값은 다른리스트에 포함 된 정확히 같은 정수 객체에 대한 참조입니다. –