Files
python-examples/doc/10_06_magic_method.md
2025-01-20 02:26:20 +09:00

2.3 KiB

매직 메서드

매직 메서드는 파이썬에서 __ (더블 언더스코어)로 시작하고 끝나는 특별한 메서드입니다. 이러한 메서드들은 파이썬 인터프리터가 객체에 대한 특정 연산을 수행할 때 자동으로 호출되어, 우리가 원하는 방식으로 객체를 동작하게 만들 수 있도록 해줍니다.

  • 사용자 정의 클래스를 내장 자료형처럼 사용: 리스트, 딕셔너리처럼 자연스러운 연산을 수행할 수 있도록 합니다.
  • 연산자 오버로딩: +, -, * 등의 연산자를 우리가 정의한 클래스에 맞게 재정의할 수 있습니다.
  • 객체의 표현 방식 커스터마이징: print() 함수에서 객체를 출력할 때 어떤 형태로 보여줄지 정의할 수 있습니다.

주요 메서드

  • __init__ : 객체 생성 시 호출되는 생성자 메서드입니다.
  • __del__ : 객체가 메모리에서 삭제되기 직전에 자동으로 호출되는 소멸자 메서드입니다.
  • __str__ : 객체를 문자열로 변환할 때 호출되어, 사용자에게 보여줄 문자열을 반환합니다.
  • __repr__ : 객체의 공식적인 문자열 표현을 반환합니다. 개발자가 디버깅이나 로그를 위해 사용합니다.
  • __len__ : 객체의 길이를 반환합니다. (len() 함수 호출 시 내부적으로 호출)
  • __getitem__ : 객체의 요소를 인덱싱하여 접근할 때 호출됩니다. (리스트, 딕셔너리처럼)
  • __setitem__ : 객체의 요소를 할당할 때 호출됩니다.
  • __delitem__ : 객체의 요소를 삭제할 때 호출됩니다.
  • __add__ : 더하기 연산자(+)를 사용할 때 호출됩니다.
  • __sub__ : 빼기 연산자(-)를 사용할 때 호출됩니다.
  • __mul__ : 곱하기 연산자(*)를 사용할 때 호출됩니다.
  • __eq__ : 두 객체가 같은지 비교할 때 호출됩니다.
  • __ne__ : 두 객체가 다른지 비교할 때 호출됩니다.
class Vector:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __repr__(self):
        return f'Vector({self.x}, {self.y})'

    # __add__ 메서드를 통해 벡터의 덧셈을 정의했습니다.
    def __add__(self, other):
        return Vector(self.x + other.x, self.y + other.y)

v1 = Vector(2, 3)
v2 = Vector(1, 2)
print(v1 + v2)  # Vector(3, 5)