Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python 연산자가 매핑되는 매직 메서드(던더 메서드) 완벽 정리

Python에서는 산술 연산자나 비교 연산자를 사용할 때, 내부적으로 해당 객체의 특별한 메서드, 즉 매직 메서드(magic method), 또는 던더 메서드(dunder method)라고 불리는 메서드가 호출됩니다. 이러한 메서드들은 이름 앞뒤로 이중 밑줄(__)이 붙어 있는 것이 특징입니다.

연산자와 매직 메서드의 관계

예를 들어 a + b라는 표현식을 실행하면, Python 인터프리터는 내부적으로 a.__add__(b)를 호출합니다. 만약 왼쪽 피연산자에 해당 메서드가 정의되어 있지 않다면, 오른쪽 피연산자의 __radd__(역순 연산 메서드)가 대신 호출됩니다.

주요 연산자별 매직 메서드 매핑표

연산자매직 메서드설명
+__add__, __radd__덧셈
-__sub__, __rsub__뺄셈
*__mul__, __rmul__곱셈
/__truediv__나눗셈 (실수 결과)
//__floordiv__몫 (정수 나눗셈)
%__mod__나머지
**__pow__거듭제곱
<<, >>__lshift__, __rshift__비트 시프트
&, |, ^__and__, __or__, __xor__비트 연산
==, !=__eq__, __ne__동등 비교
<, >, <=, >=__lt__, __gt__, __le__, __ge__크기 비교
+=, -=__iadd__, __isub__복합 대입 연산(in-place 연산)

그 외 자주 사용되는 매직 메서드

  • len(obj)__len__: 객체의 길이 반환
  • str(obj)__str__: 사용자 친화적인 문자열 표현
  • repr(obj)__repr__: 개발자용 공식 문자열 표현
  • obj[key]__getitem__: 인덱싱 및 슬라이싱
  • iter(obj)__iter__: 반복자 생성

공식 문서에서 전체 목록 확인하기

모든 연산자와 매직 메서드의 매핑 관계는 Python 공식 문서의 「Data model」 챕터에서 확인할 수 있습니다. 아래 링크에서 각 연산자에 대응하는 특수 메서드의 전체 목록과 동작 방식을 자세히 살펴볼 수 있습니다.

👉 Python 공식 문서 - Data model (특수 메서드 이름)

이 문서를 참고하면 사용자 정의 클래스에서 연산자 오버로딩(operator overloading)을 구현할 때 어떤 메서드를 재정의해야 하는지 명확하게 파악할 수 있습니다.