underscore 메서드
1. 기본 초기화 및 객체 생성 관련
- __init__(self, ...)
객체 초기화 메서드입니다. 클래스의 인스턴스가 생성될 때 호출되며, 초기값 설정에 사용됩니다. 생성자 역할을 합니다. - __new__(cls, ...)
객체의 인스턴스를 생성하는 메서드로, __init__이 호출되기 전에 실행됩니다. 주로 객체 생성 과정을 제어할 때 사용됩니다. - __del__(self)
객체가 소멸될 때 호출됩니다. 주로 리소스 정리가 필요할 때 사용됩니다. 하지만, 일반적으로 사용은 권장되지 않습니다.
2. 문자열 표현 관련
- __str__(self)
객체의 "문자열 표현"을 정의합니다. print()나 str()에서 호출됩니다. - __repr__(self)
객체의 "공식적인 문자열 표현"을 반환합니다. repr() 함수나 대화형 셸에서 객체를 출력할 때 호출됩니다. - __format__(self, format_spec)
format() 함수나 문자열 포매팅(예: f"{obj:format_spec}")에서 호출됩니다.
3. 산술 연산자 오버로딩
산술 연산자(+, -, *, / 등)를 사용자 정의 객체에서 사용할 수 있도록 재정의합니다.
- __add__(self, other) → +
- __sub__(self, other) → -
- __mul__(self, other) → *
- __truediv__(self, other) → /
- __floordiv__(self, other) → //
- __mod__(self, other) → %
- __pow__(self, other) → **
- __eq__(self, other) → ==
- __lt__(self, other) → <
(기타 연산자 메서드도 있음)
4. 컨테이너 및 반복 관련
- __len__(self)
객체의 길이를 반환합니다. len() 함수에서 호출됩니다. - __getitem__(self, key)
객체에서 특정 키나 인덱스의 값을 반환합니다. (예: obj[key]) - __setitem__(self, key, value)
객체의 특정 키나 인덱스에 값을 설정합니다. (예: obj[key] = value) - __delitem__(self, key)
객체의 특정 키나 인덱스를 삭제합니다. (예: del obj[key]) - __iter__(self)
객체를 반복 가능하게 합니다. 반복자가 반환됩니다. - __next__(self)
반복자의 다음 값을 반환합니다. (반복자 객체 내부에서 사용)
5. 속성 접근 관련
- __getattr__(self, name)
속성에 접근할 때 호출됩니다. 속성이 없을 경우 처리 논리를 정의합니다. - __setattr__(self, name, value)
속성 설정 시 호출됩니다. - __delattr__(self, name)
속성 삭제 시 호출됩니다. - __getattribute__(self, name)
모든 속성 접근 시 호출됩니다. 기본 속성 접근 방식도 재정의합니다. - __dir__(self)
dir() 함수에서 반환할 속성을 정의합니다.
6. 컨텍스트 관리 관련
- __enter__(self)
컨텍스트 진입 시 호출됩니다. (예: with 문 시작 시) - __exit__(self, exc_type, exc_value, traceback)
컨텍스트 종료 시 호출됩니다. (예: with 문 종료 시)
7. 기타 특수 메서드
- __call__(self, ...)
객체를 함수처럼 호출할 수 있도록 합니다. (예: obj()) - __hash__(self)
객체의 해시값을 반환합니다. 해시 테이블(예: 딕셔너리 키)에서 사용됩니다. - __bool__(self)
객체의 불리언 값을 정의합니다. (예: bool(obj)) - __contains__(self, item)
객체에 항목이 포함되어 있는지 확인합니다. (예: item in obj)
8. 메타클래스 및 클래스 관련
- __class__
객체의 클래스를 반환합니다. - __bases__
클래스가 상속받은 클래스들의 튜플을 반환합니다. - __mro__
클래스의 메서드 탐색 순서를 정의하는 튜플입니다.
반응형