반응형
클래스의 __ getattr __
메서드를 재정 의하여 멋진 작업을 수행하고 싶지만 기본 동작을 중단하고 싶지 않습니다.
이를 수행하는 올바른 방법은 무엇입니까?
해결 방법
__ getattr __
재정의는 괜찮습니다. __ getattr __
는 마지막 수단으로 만 호출됩니다. 인스턴스에 이름과 일치하는 속성이없는 경우에만 호출됩니다. 예를 들어 foo.bar
에 액세스하면 foo
에 bar
__ getattr __ 가 호출됩니다. >. 처리하고 싶지 않은 속성 인 경우 AttributeError
를 발생시킵니다.
class Foo(object):
def __getattr__(self, name):
if some_predicate(name):
# ...
else:
# Default behaviour
raise AttributeError
그러나 __ getattr __
과 달리 __ getattribute __
가 먼저 호출됩니다 (새 스타일 클래스, 즉 객체에서 상속 된 클래스에서만 작동 함). 이 경우 다음과 같이 기본 동작을 유지할 수 있습니다.
class Foo(object):
def __getattribute__(self, name):
if some_predicate(name):
# ...
else:
# Default behaviour
return object.__getattribute__(self, name)
참조 페이지 https://stackoverflow.com/questions/2405590
반응형
'파이썬' 카테고리의 다른 글
파이썬 Pandas에서 기존 데이터 프레임의 다중 인덱스 설정 (0) | 2020.12.13 |
---|---|
파이썬 qtableWidget PyQT에 행을 추가하는 방법은 무엇입니까? (0) | 2020.12.13 |
파이썬 HTTPResponse object -- JSON object must be str, not 'bytes' (0) | 2020.12.13 |
파이썬 Python 오류 : +에 대해 지원되지 않는 피연산자 유형 : 'int'및 'NoneType' (0) | 2020.12.13 |
파이썬 pyvenv-3.4 returned non-zero exit status 1 (0) | 2020.12.13 |
댓글