카테고리 없음

Python의 underscore 메서드

dullin 2025. 1. 13. 17:22

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__
    클래스의 메서드 탐색 순서를 정의하는 튜플입니다.
반응형