반응형
    
    
    
  클래스의  __ 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 | 
댓글