Python Property & Descriptor

1. 인스턴스 속성 및 프로퍼티
- 인스턴스 속성은 각 클래스 인스턴스에 고유하며, 일반적으로 init 메서드에서 정의됩니다. 이 속성들은 직접 접근하거나 getattr를 통해 접근할 수 있습니다.

- 파이썬의 property 함수는 게터, 세터 및 딜리터 메서드를 정의하여 속성 접근을 사용자 정의할 수 있게 하며, 접근 패턴을 변경하지 않고 추가적인 로직을 가능하게 합니다.

2. 디스크립터 프로토콜
- 디스크립터는 get, set, delete와 같은 메서드를 구현하여 다른 객체의 속성 접근을 제어합니다. 이는 여러 클래스와 변수에 걸쳐 재사용할 수 있어 속성 동작을 관리하는 확장 가능한 솔루션을 제공합니다.

- 디스크립터는 인스턴스 간에 공유되는 클래스 변수이며, 내부 사전 및 인스턴스 해시를 사용하여 인스턴스별 값을 관리할 수 있습니다. 콜백 함수가 있는 약한 참조는 삭제된 객체에 대한 참조를 제거하여 메모리 누수를 방지하는 데 도움이 됩니다.

3. 프로퍼티 조회 해결
- 파이썬은 속성 조회 시 인스턴스 사전 값보다 데이터 디스크립터를 우선합니다. dict 변수의 인스턴스 값은 비데이터 디스크립터를 재정의할 수 있습니다. property 함수는 내부적으로 데이터 디스크립터를 생성하여 인스턴스 값에 의해 대체되지 않도록 합니다.

자세한 블로그 읽어보기[EN]: https://www.zerotoexpert.blog/p/python-property-and-descriptor-zero

Python Property & Descriptor: Zero to Expert

Zerotoexpert

Python Property & Descriptor: Zero to Expert

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2024년 7월 13일 오후 3:56

댓글 0

    함께 읽은 게시물

    성능 테스트에서 병목현상을 발견하고 해결한 과정

    ... 더 보기

    웹 서버 성능테스트 - 병목 해결을 위한 단계별 테스트

    개발 여정

    웹 서버 성능테스트 - 병목 해결을 위한 단계별 테스트

    성장이 어려운 환경에서의 개발자 생활

    저런 개발자 생활도 한적이 있어서 다양한 생각이 든다.

    “어이 신입, 탈출각이다” | 요즘IT

    요즘IT

    “어이 신입, 탈출각이다” | 요즘IT

    우아한 고성능 프로그래밍 언어 Rust 입문 및 활용 강의 오픈

    또 하나의 강의를 오픈했습니다. 누구나 탄탄하고 효율적인 고성능 소프트웨어를 만들 수 있게 해주는 프로그래밍 언어, Rust를 배우는 강의입니다. 로우레벨 프로그래밍을 할 수 있으면서도 하이레벨 언어기능이 풍부하여 이상적입니다. https://inf.run/LPYW 호기심에 공부를 시작했다가, 이내 빠져들어서, 개인 사이드프로젝트 용도로 잘 활용하고 있습니다. 너무 마음에 들어서 강의로 만들게 되었네요. 언어 기능으로는 함수형 언어로 부를 수 있을 만큼 고급 기능이 많이 들어있... 더 보기

    우아한 고성능 프로그래밍 언어 Rust 입문 및 활용 - 인프런 | 강의

    인프런

    우아한 고성능 프로그래밍 언어 Rust 입문 및 활용 - 인프런 | 강의

    기술, 개발 학습 자료 7가지

    최근 자주 사용하고 있는 기술, 개발 및 자기 계발 학습 자료를 모아서 공유합니다. 1️⃣ Educative.io 퀄리티가 상당히 높은 기술 관련 코스가 많은 것 같아요. 현재까지 코스 3개를 들었습니다. 책처럼 읽으면서 배우는 코스라 듣는 것보다 읽으면서 학습하는 걸 선호하는 분들에게 추천합니다. 주제를 깊이 파고들고 코드나 설계 예시가 많아서 잘 사용하는 것 같습니다. 최근에 Concurrency관련 코스를 듣고 있습니다. https://www.educative.io/ 2️⃣ Designing Data Intensi... 더 보기

    Educative: Interactive Courses for Software Developers

    Educative

    Educative: Interactive Courses for Software Developers

     • 

    댓글 9 • 저장 956 • 조회 22,026


    [오라클] 실제 환자 데이터분석 / AI 진단예측모델 개발 프로젝트 모집

    I

    ... 더 보기

     • 

    조회 80


    간만에 재밌게 읽은 기술 포스트

    ... 더 보기

    무진장 힘들었지만 무진장 성장한 개발 이야기

    Medium

    무진장 힘들었지만 무진장 성장한 개발 이야기