Python/Docs
repr
두잇 두두
2025. 2. 5. 23:13
728x90
repr은 Python에서 객체의 문자열 표현을 반환하는 내장 함수입니다. 주로 디버깅 및 로깅에 사용되며, repr(obj)를 호출하면 obj.__repr__() 메서드가 실행됩니다.
repr의 특징
- 객체를 프로그래머가 이해할 수 있는 형식으로 표현
- 가능하면 객체를 재생성할 수 있는 문자열을 반환
- eval(repr(obj)) == obj가 성립하는 것이 이상적
repr vs str
- repr(obj): 객체의 명확하고 공식적인 표현 (디버깅용)
- str(obj): 객체의 사용자 친화적인 표현 (출력용)
import datetime
now = datetime.datetime.now()
print(repr(now)) # datetime.datetime(2025, 2, 5, 14, 30, 45, 123456)
print(str(now)) # 2025-02-05 14:30:45.123456
__repr__ 메서드 정의하기
사용자 정의 클래스에서 repr()을 의미 있게 만들려면 __repr__을 직접 정의해야 합니다.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f"Person(name={self.name!r}, age={self.age})"
p = Person("Alice", 30)
print(repr(p)) # Person(name='Alice', age=30)
위 코드에서 !r은 repr()을 사용해 문자열을 표현하도록 만듭니다.
언제 repr을 사용해야 할까?
- 디버깅 시 객체를 명확하게 표현할 때
- 객체의 직렬화(예: eval(repr(obj)))가 필요할 때
- 로그 기록에서 객체 상태를 명확하게 남길 때