본문 바로가기
Python/Python FAQ

Python __getattr__와 __getattribute__의 차이점, Difference between __getattr__ and __getattribute__

by 베타코드 2023. 9. 18.
반응형

질문


나는 __getattr__ 또는 __getattribute__를 정의해야 할 때를 이해하려고 노력하고 있습니다. 파이썬 문서__getattribute__가 새로운 스타일의 클래스에 적용된다고 언급합니다. 새로운 스타일의 클래스란 무엇인가요?


답변


__getattr__와 __getattribute__ 사이의 주요 차이점은 __getattr__은 일반적인 방법으로 속성을 찾지 못한 경우에만 호출된다는 것입니다. 속성이 없을 때 대체 속성을 구현하는 데 유용하며, 아마도 원하는 두 가지 중 하나입니다.

__getattribute__은 객체의 실제 속성을 확인하기 전에 호출되므로 올바르게 구현하기 어려울 수 있습니다. 매우 쉽게 무한 재귀에 빠질 수 있습니다.

새로운 스타일의 클래스는 object를 상속받으며, 구체적인 기본 클래스가 없는 Python 2.x의 구식 클래스는 구식 클래스입니다. 그러나 __getattr__과 __getattribute__ 사이에서 구식 클래스와 새로운 스타일 클래스를 선택할 때 중요한 차이점은 아닙니다.

아마도 __getattr__을 원하는 것입니다.

반응형

댓글