Python의 불변 객체: 기본 솔루션 너머
표준 튜플 클래스가 불변성을 제공하는 반면, 이 문서에서는 불변 객체를 생성하기 위한 고급 기술을 살펴봅니다. 순수 Python 또는 C 확장을 사용합니다.
__setattr__ 재정의: 제한된 접근 방식
한 가지 일반적인 해결책은 setattr 메서드를 재정의하는 것입니다. 그러나 이는 init 함수에서도 속성 설정을 방지합니다. 따라서 모든 시나리오에 적합하지 않을 수 있습니다.
튜플 하위 클래스화: 부분 솔루션
또 다른 접근 방식은 사용자 정의 new[를 제공하여 튜플을 하위 클래스화하는 것입니다. &&&] 속성에 액세스하기 위한 메서드 및 속성입니다. 그러나 이 방법은 self[0] 및 self[1]을 통한 속성 액세스를 완전히 방지하지 못하므로 불편할 수 있습니다.
namedtuple 솔루션: 단순성과 호환성
더 간단하고 강력한 솔루션은 Python 컬렉션 모듈의 명명된 튜플 클래스를 사용하는 것입니다:Immutable = collections.namedtuple("Immutable", ["a", "b"])
이전 기술과 유사하게 이는 튜플에서 파생된 유형을 생성하고 __slots__을 사용합니다. 여러 가지 장점을 제공합니다:결론
namedtuple 클래스는 Python에서 불변 객체를 생성하는 편리하고 효율적인 방법을 제공합니다. 이는 고급 기술에 대한 실행 가능한 대안이며 직렬화 호환성과 같은 추가 이점을 제공합니다.부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3