# 매직 메서드 매직 메서드는 파이썬에서 `__` (더블 언더스코어)로 시작하고 끝나는 특별한 메서드입니다. 이러한 메서드들은 파이썬 인터프리터가 객체에 대한 특정 연산을 수행할 때 자동으로 호출되어, 우리가 원하는 방식으로 객체를 동작하게 만들 수 있도록 해줍니다. * 사용자 정의 클래스를 내장 자료형처럼 사용: 리스트, 딕셔너리처럼 자연스러운 연산을 수행할 수 있도록 합니다. * 연산자 오버로딩: +, -, * 등의 연산자를 우리가 정의한 클래스에 맞게 재정의할 수 있습니다. * 객체의 표현 방식 커스터마이징: print() 함수에서 객체를 출력할 때 어떤 형태로 보여줄지 정의할 수 있습니다. ## 주요 메서드 * `__init__` : 객체 생성 시 호출되는 생성자 메서드입니다. * `__del__` : 객체가 메모리에서 삭제되기 직전에 자동으로 호출되는 소멸자 메서드입니다. * `__str__` : 객체를 문자열로 변환할 때 호출되어, 사용자에게 보여줄 문자열을 반환합니다. * `__repr__` : 객체의 공식적인 문자열 표현을 반환합니다. 개발자가 디버깅이나 로그를 위해 사용합니다. * `__len__` : 객체의 길이를 반환합니다. (len() 함수 호출 시 내부적으로 호출) * `__getitem__` : 객체의 요소를 인덱싱하여 접근할 때 호출됩니다. (리스트, 딕셔너리처럼) * `__setitem__` : 객체의 요소를 할당할 때 호출됩니다. * `__delitem__` : 객체의 요소를 삭제할 때 호출됩니다. * `__add__` : 더하기 연산자(+)를 사용할 때 호출됩니다. * `__sub__` : 빼기 연산자(-)를 사용할 때 호출됩니다. * `__mul__` : 곱하기 연산자(*)를 사용할 때 호출됩니다. * `__eq__` : 두 객체가 같은지 비교할 때 호출됩니다. * `__ne__` : 두 객체가 다른지 비교할 때 호출됩니다. ```python 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) ```