"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Python에서 `__getattr__`과 `__getattribute__`를 언제 사용해야 합니까?

Python에서 `__getattr__`과 `__getattribute__`를 언제 사용해야 합니까?

2024-11-08에 게시됨
검색:686

When should you use `__getattr__` vs `__getattribute__` in Python?

getattr 대 Python의 getattribute

__getattr__과 __getattribute__의 차이점을 이해하는 것이 중요합니다. Python 객체로 작업할 때. 두 방법 모두 객체에서 속성을 검색하는 방법을 제어하도록 설계되었지만 서로 다른 기능을 수행하고 특정 사용 사례가 있습니다.

새로운 스타일 클래스

자세히 살펴보기 전에 __getattr__과 __getattribute__의 차이점을 이해하려면 "새로운 스타일 클래스"의 개념을 명확히 하는 것이 좋습니다. Python에는 새 스타일과 이전 스타일의 두 가지 유형의 클래스가 있습니다. 새로운 스타일 클래스는 명시적으로 또는 암시적으로 객체 클래스에서 상속되는 클래스인 반면, 이전 스타일 클래스는 기본 클래스가 정의되지 않은 Python 2.x의 클래스입니다. 그러나 이러한 구별은 __getattr__과 __getattribute__ 사이의 선택과 관련이 없습니다.

getattrgetattribute

__getattr__은 객체의 사전이나 해당 기본 클래스에 없는 속성에 액세스할 때 호출됩니다. 이를 통해 객체 자체에 존재하지 않는 속성을 검색하기 위한 대체 메커니즘을 구현할 수 있습니다. 이 메서드는 메타프로그래밍 시나리오와 같이 동적 속성 액세스를 제공하는 데 일반적으로 사용됩니다. 반면에

__getattribute__는 존재 여부에 관계없이 객체의 속성에 액세스할 때 호출됩니다. 객체의 사전이나 기본 클래스를 확인하기 전에 호출됩니다. __getattribute__ 구현은 무한 재귀를 방지하기 위해 신중한 처리가 필요하므로 까다로울 수 있습니다.

사용 시기 getattr 또는 getattribute

요약하자면, 대체 메커니즘을 제공하여 누락된 속성에 대한 속성 검색을 처리하려는 경우 __getattr__을 사용해야 합니다. __getattribute__는 더 다양하지만 올바르게 구현하기가 더 복잡할 수 있으며 일반적으로 대부분의 실제 목적에는 필요하지 않습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3