본문 바로가기
실버를 위한 코딩/파이썬

[파이썬] 파이썬에서 특수 매서드란?

by forSilver 2024. 10. 2.
반응형

파이썬에서 특수 매서드란?

특수 메서드(또는 매직 메서드, 던더 메서드라고도 불림)는 Python에서 클래스에 정의할 수 있는 특별한 메서드로, 특정 연산자나 내장 함수가 객체에 대해 호출될 때 자동으로 호출되는 메서드입니다. 이 메서드들의 이름은 보통 두 개의 밑줄(__)로 시작하고 끝납니다. 특수 메서드를 통해 Python의 객체들이 예상하는 방식으로 동작하도록 만들 수 있습니다.

예를 들어, 두 개의 객체를 더할 때 + 연산자를 사용할 수 있습니다. 그런데 실제로는 Python이 객체 내부에서 __add__()라는 특수 메서드를 호출하여 그 연산을 수행하게 됩니다. 즉, a + ba.__add__(b)와 동일한 방식으로 동작하는 것입니다.

몇 가지 중요한 특수 메서드를 살펴보면 다음과 같습니다:

  1. __init__(self, ...): 객체를 초기화할 때 호출되는 생성자 메서드입니다. 클래스의 인스턴스가 생성될 때 자동으로 호출됩니다.
    • 예: obj = MyClass() 하면, __init__()이 호출됩니다.
  2. __str__(self): print()와 같은 함수에서 객체를 문자열로 변환할 때 호출됩니다. 객체를 사람이 읽을 수 있는 문자열로 반환합니다.
    • 예: print(obj)를 하면, obj.__str__()이 호출되어 출력됩니다.
  3. __repr__(self): 객체의 "공식적"인 문자열 표현을 반환하는 메서드입니다. 개발자가 객체를 이해하는 데 도움이 되는 정보를 출력할 때 사용됩니다. 보통 디버깅 시 많이 사용됩니다.
    • 예: repr(obj)를 호출하면 __repr__()이 호출됩니다.
  4. __add__(self, other): 두 객체 간의 덧셈(+) 연산을 처리하는 메서드입니다.
    • 예: a + ba.__add__(b)로 변환됩니다.
  5. __eq__(self, other): 두 객체가 같은지(==) 비교할 때 호출됩니다.
    • 예: a == ba.__eq__(b)로 변환됩니다.
  6. __len__(self): 객체의 길이를 반환할 때 사용됩니다. len() 함수를 사용할 때 호출됩니다.
    • 예: len(obj)obj.__len__()을 호출합니다.
  7. __getitem__(self, key): 객체에서 특정 항목을 가져올 때 사용하는 메서드입니다. 인덱싱([]) 연산을 지원합니다.
    • 예: obj[key]obj.__getitem__(key)로 호출됩니다.
  8. __call__(self, ...): 객체를 함수처럼 호출할 수 있게 해주는 메서드입니다. 객체에 소괄호를 붙여 함수처럼 호출할 때 사용됩니다.
    • 예: obj()obj.__call__()을 호출합니다.

내장 함수 'bool'에 포함된 특수 메서드

 

특수 메서드를 사용하면 객체가 더 Pythonic하게 동작할 수 있게 만들어, 다른 내장 함수나 연산자들과 자연스럽게 통합됩니다. 이러한 특수 메서드를 적절히 구현하면, 자신이 만든 클래스가 기본 자료형처럼 동작하도록 만들 수 있습니다.