1. object.__getattr__(self, name)
객체의 attribute 에 접근이 실패하여 AttributeError 가 발생하면 호출된다. AttributeError 는 해당 attribute가 객체나 클래스에 존재하지 않는 경우 __getattribute__() 메서드 등에 의해 발생한다. 이때 예외처리를 통해서 특정한 속성 값을 반환할 수도 있고, 따로 처리가 없는 경우 동일하게 AttributeError를 반환하도록 할 수도 있다.
만약 정상적으로 attribute 가 반환되는 경우에는 __getattr__() 메서드가 호출되지 않는다. 만약 attribute 접근에 대한 완전한 조작을 하기 위해서는 아래의 __getattribute__() 메서드를 사용하면 된다.
2. object.__getattribute__(self, name)
__getattr__() 메서드보다 선순위에서 실행되는 메서드로 클래스에 __getattr__() 와 함께 구현되어 있는 경우, 명시적으로 __getattr__() 를 호출하거나 __getattribute__() 메서드에서 AttributeError를 일으키지 않으면 __getattr__() 메서드가 실행되지 않는다.
3. object.__setattr__(self, name, value)
Attribute 를 객체에 대입할 때 호출된다. Name 은 attribute 의 이름이고 value 는 해당 attribute 에 대입하려는 값이 된다. 기존에 name 의 이름을 가지는 attribute 가 존재하는 경우 value 로 값을 변경하고, 없는 경우에는 새롭게 name 이라는 attribute 를 생성하여 value 를 할당한다.
4. object.__delattr__(self, name)
__setattr__() 과 유사하지만 대입이 아니라 삭제 시에 호출되는 메서드이다. 이 메서드는 del obj.name 이 해당 객체에서 정상적으로 수행 되는 경우에만 구현되어야 한다. 기존에 존재하지 않는 attribute 를 삭제하려고 하면 AttributeError 가 발생한다.
5. object.__dir__(self)
객체에 dir([object]) 메서드가 사용되는 경우에 호출된다. dir() 메서드의 결과가 되는 시퀀스를 반환하는데, dir() 는 해당 시퀀스를 리스트로 변환한 후 정렬하여 결과로 반환한다.
'프로그래밍언어 > Python' 카테고리의 다른 글
[Python] module, package, library (0) | 2022.02.11 |
---|---|
[Python] copy (0) | 2022.02.08 |
[Python] Magic method - 객체 표현 (0) | 2021.12.15 |
[Python] Magic method - 객체 생성, 초기화 (0) | 2021.12.15 |
[Python] urlparse (0) | 2021.10.16 |