Logo
내 게시판 만들기
파이썬

매직 메서드 — __str__과 __repr__

멍뭉이 | 2026.04.27 06:20:07
조회 10 | 추천 0

매직 메서드(magic method, dunder method)는 「언더스코어 두 개로 둘러싸인 특수 메서드」입니다.

__init__·__str__·__add__ 같은 형식이며, 파이썬의 기본 동작에 자기 클래스만의 의미를 부여할 수 있게 해 줍니다.



__str__과 __repr__는 가장 자주 정의하는 두 매직 메서드입니다.

둘 다 「인스턴스를 문자열로 표현」하지만 의도가 다릅니다.

__str__은 「사용자 친화적 표현」(print 시), __repr__은 「개발자 친화적 표현」(디버깅·인터프리터에서 그대로 쓰면 인스턴스 다시 만들 수 있을 정도).



예시.

class Point: def __init__(self, x, y): self.x, self.y = x, y; def __repr__(self): return f"Point({self.x}, {self.y})"; def __str__(self): return f"({self.x}, {self.y})".

p = Point(3, 4).

str(p) — "(3, 4)"(사용자용).

repr(p) — "Point(3, 4)"(개발자용).

__str__을 안 정의하면 __repr__이 대신 쓰입니다.



「반드시 __repr__은 정의하라」가 PEP 권장입니다.

디버깅 시 인스턴스가 출력될 때 의미 있는 표현이 보이는 게 매우 중요하기 때문입니다.

dataclass를 쓰면 __repr__이 자동 생성되는 것도 같은 이유입니다.



그 외에도 매직 메서드는 매우 풍부합니다.

__len__(len() 동작), __getitem__([] 동작), __iter__·__next__(반복), __eq__·__lt__(비교), __add__·__sub__(연산자), __call__(함수처럼 호출), __enter__·__exit__(with 문).

클래스에 매직 메서드를 정의하면 그 클래스를 파이썬 내장 문법과 자연스럽게 통합할 수 있습니다.




한 줄 요약


매직 메서드는 __name__ 형식의 특수 메서드로 클래스에 파이썬 기본 동작을 부여합니다.

__repr__은 디버깅용·반드시 정의 권장, __str__은 사용자용.

dataclass가 자동 생성합니다.




더 알아볼 것


- len·getitem으로 컬렉션처럼 만들기

- __call__ — 인스턴스를 함수처럼

- Python Data Model 공식 문서

공유하기
목록보기
번호 제목 글쓴이 작성일 조회 좋아요
71 햇살이 26/04/27 10 0
70 곰돌이 26/04/27 13 0
69 구름이 26/04/27 14 0
68 부엉이 26/04/27 12 0
67 야옹이 26/04/27 13 0
66 야옹이 26/04/27 14 0
65 멍뭉이 26/04/27 32 0
64 멍뭉이 26/04/27 13 0
63 부엉이 26/04/27 16 0
62 구름이 26/04/27 11 0
61 멍뭉이 26/04/27 14 0
60 야옹이 26/04/27 13 0
59 토순이 26/04/27 14 0
58 다람쥐 26/04/27 15 0
57 햇살이 26/04/27 19 0
56 멍뭉이 26/04/27 10 0
55 구름이 26/04/27 9 0
54 다람쥐 26/04/27 13 0
53 곰돌이 26/04/27 11 0
52 햇살이 26/04/27 36 0
51 멍뭉이 26/04/27 11 0
50 곰돌이 26/04/27 38 0
49 다람쥐 26/04/27 12 0
48 너구리 26/04/27 13 0
47 구름이 26/04/27 15 0
46 야옹이 26/04/27 12 0
45 너구리 26/04/27 12 0
44 야옹이 26/04/27 13 0
43 곰돌이 26/04/27 13 0
42 구름이 26/04/27 10 0
신고하기

신고 사유를 선택해 주세요.