728x90
파이썬의 클래스는 특별한 이름을 가진 메서드들을 통해 다양한 내장 기능을 커스터마이징할 수 있습니다. 이러한 메서드를 매직 메서드(Magic Method) 또는 던더 메서드(Dunder Method, Double Underscore)라고 부르며, 객체의 표현, 연산자 동작, 비교 동작 등을 제어할 수 있습니다.
● __str__ 메서드
객체를 print()
하거나 str()
로 문자열 변환할 때 호출되는 메서드입니다. 객체의 사람이 읽기 쉬운 표현을 정의할 수 있습니다.
class User:
def __init__(self, name):
self.name = name
def __str__(self):
return f"User: {self.name}"
u = User("Alice")
print(u) # 출력: User: Alice
● __repr__ 메서드
__repr__
은 객체를 개발자용으로 표현할 때 사용되며, 보통 eval(repr(obj)) == obj
가 성립하도록 설계합니다. 디버깅 시 유용합니다.
● __eq__, __lt__, __gt__ 등의 비교 메서드
==, <, >, !=
등의 연산자를 오버라이드할 수 있는 매직 메서드입니다. 객체 간 비교 기준을 자유롭게 정의할 수 있습니다.
class Point:
def __init__(self, x):
self.x = x
def __eq__(self, other):
return self.x == other.x
def __lt__(self, other):
return self.x < other.x
이렇게 정의하면 Point(3) == Point(3)
은 True, Point(1) < Point(2)
도 True로 동작합니다.
● 연산자 오버로딩 예시
__add__
, __sub__
, __mul__
등의 메서드를 통해 +, -, * 연산자도 오버로딩 가능합니다.
class Vector:
def __init__(self, x):
self.x = x
def __add__(self, other):
return Vector(self.x + other.x)
● 마무리
매직 메서드는 객체의 동작 방식을 세밀하게 제어할 수 있게 해줍니다. 파이썬의 유연한 객체 모델을 제대로 활용하려면 __str__
, __eq__
, __lt__
같은 매직 메서드의 쓰임새를 잘 이해하고 있는 것이 매우 중요합니다.
728x90
'프로그래밍언어 > 파이썬[중급]' 카테고리의 다른 글
[파이썬][중급] Chapter07. 예외 처리 패턴과 리팩토링 (0) | 2025.05.18 |
---|---|
[파이썬][중급] Chapter06. 사용자 정의 예외 클래스 (0) | 2025.05.18 |
[파이썬][중급] Chapter04. 다중 상속과 MRO 이해 (0) | 2025.05.18 |
[파이썬][중급] Chapter03. 추상 클래스와 ABC 모듈 (0) | 2025.05.18 |
[파이썬][중급] Chapter02. @property와 getter/setter 사용법 (0) | 2025.05.18 |