Table of Contents
728x90
Python에서 __str__과 __repr__는 객체를 문자열로 표현하기 위한 두 가지 매직 메서드입니다. 이 두 메서드는 유사한 기능을 하지만, 사용 목적과 결과에 차이가 있습니다.
__str__
- 목적: __str__ 메서드는 객체를 인간이 읽기 쉬운 형태로 "비공식적인" 문자열 표현으로 변환하는 데 사용됩니다. 이 메서드는 str() 함수가 호출될 때 실행되며, print() 함수에서 객체를 출력할 때 자동으로 사용됩니다.
- 사용자 친화적: 주로 사용자에게 친숙하고 이해하기 쉬운 형식으로 객체를 표시하는 데 중점을 둡니다.
__repr__
- 목적: __repr__ 메서드는 객체를 "공식적인" 문자열 표현으로 변환하는 데 사용됩니다. 이 메서드는 객체를 개발자가 이해할 수 있는 방식으로 정확하게 표현하며, 가능한 경우, 이 문자열을 사용해 해당 객체를 재생성할 수 있어야 합니다 (eval(repr(obj)) == obj이 참이 되도록).
- 개발자 친화적: 주로 디버깅과 개발 중에 객체의 정확한 상태를 문자열로 확인하기 위해 사용됩니다.
예시: 사용자 정의 클래스와 repr()
다음은 사용자 정의 클래스 Point에 대해 __repr__ 메소드를 구현한 예입니다. 이 클래스는 2차원 공간에서 점을 표현하며, __repr__ 메소드는 이 점의 좌표를 정확하고 명확하게 표현하기 위해 사용됩니다.
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __repr__(self):
return f"Point({self.x}, {self.y})"
# 객체 생성
p = Point(3, 4)
# 객체의 repr() 출력
print(repr(p)) # 출력: Point(3, 4)
이 예에서 __repr__ 메소드는 객체를 생성하는 데 사용할 수 있는 정확한 문자열 표현을 제공합니다. repr(p)를 호출하면 Point(3, 4)라는 문자열이 반환되는데, 이는 Python의 생성자 호출 형식을 따릅니다. 이 문자열을 eval() 함수와 함께 사용하면 원래의 Point 객체를 정확히 재생성할 수 있습니다(단, 안전성을 고려하여 실제로 eval() 사용을 권장하지는 않습니다).
디버깅과 로깅
repr()은 디버깅과 로깅에 유용하게 사용됩니다. 객체의 상태를 정확히 알고 싶을 때, repr()으로 해당 객체의 상세 정보를 로그로 남길 수 있습니다. 이 정보를 통해 개발자는 코드의 행동을 더 잘 이해하고 문제를 더 쉽게 해결할 수 있습니다.
import logging
logging.basicConfig(level=logging.DEBUG)
logging.debug(repr(p))
이 로깅 예에서는 Point 객체의 repr() 결과가 로그로 기록되어, 개발자가 시스템의 상태를 확인하거나 문제를 진단하는 데 도움이 됩니다.
'Python' 카테고리의 다른 글
map함수 모든 값에 특정 함수를 적용시키기 (1) | 2024.04.28 |
---|---|
list를 활용한 함수 (1) | 2024.04.28 |
Type Annotation Convention을 따르자 (0) | 2024.04.21 |
이터레이터iterator / 데코레이터decorator / iter, yield, next (1) | 2024.04.21 |
클래스Class / 클로저Closure / 데코레이터Decorator (1) | 2024.04.20 |
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- English
- Numpy
- 파이썬
- classification
- recursion #재귀 #자료구조 # 알고리즘
- 해시
- PEFT
- speaking
- Github
- 티스토리챌린지
- Lora
- RAG
- Python
- 리스트
- Hugging Face
- git
- 손실함수
- Array
- 오블완
- clustering
- LIST
- 코딩테스트
- #패스트캠퍼스 #UpstageAILab #Upstage #부트캠프 #AI #데이터분석 #데이터사이언스 #무료교육 #국비지원 #국비지원취업 #데이터분석취업 등
- Transformer
- #패스트캠퍼스 #패스트캠퍼스AI부트캠프 #업스테이지패스트캠퍼스 #UpstageAILab#국비지원 #패스트캠퍼스업스테이지에이아이랩#패스트캠퍼스업스테이지부트캠프
- nlp
- t5
- #패스트캠퍼스 #패스트캠퍼스ai부트캠프 #업스테이지패스트캠퍼스 #upstageailab#국비지원 #패스트캠퍼스업스테이지에이아이랩#패스트캠퍼스업스테이지부트캠프
- cnn
- LLM
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함