본문 바로가기
프로그래밍언어/파이썬[중급]

[파이썬][중급] Chapter05. 매직 메서드(__str__, __eq__, __lt__ 등)

by about_IT 2025. 5. 18.
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