반응형
질문
나는 __getattr__
또는 __getattribute__
를 정의해야 할 때를 이해하려고 노력하고 있습니다. 파이썬 문서는 __getattribute__
가 새로운 스타일의 클래스에 적용된다고 언급합니다. 새로운 스타일의 클래스란 무엇인가요?
답변
__getattr__와 __getattribute__ 사이의 주요 차이점은 __getattr__은 일반적인 방법으로 속성을 찾지 못한 경우에만 호출된다는 것입니다. 속성이 없을 때 대체 속성을 구현하는 데 유용하며, 아마도 원하는 두 가지 중 하나입니다.
__getattribute__은 객체의 실제 속성을 확인하기 전에 호출되므로 올바르게 구현하기 어려울 수 있습니다. 매우 쉽게 무한 재귀에 빠질 수 있습니다.
새로운 스타일의 클래스는 object를 상속받으며, 구체적인 기본 클래스가 없는 Python 2.x의 구식 클래스는 구식 클래스입니다. 그러나 __getattr__과 __getattribute__ 사이에서 구식 클래스와 새로운 스타일 클래스를 선택할 때 중요한 차이점은 아닙니다.
아마도 __getattr__을 원하는 것입니다.
반응형
댓글