반응형
파이썬에서 str()
과 repr()
은 둘 다 객체를 문자열 형태로 표현하는 데 사용되지만, 목적과 결과에 있어 차이가 있습니다.
1. 목적
str()
: 주로 사용자에게 객체를 읽기 쉽고 이해하기 쉬운 형태로 표현하는 것을 목표로 합니다. 즉, 일반적인 최종 사용자를 위한 "비공식적인" 표현입니다.repr()
: 객체를 개발자나 파이썬 인터프리터가 이해할 수 있는 형태로 표현하는 것을 목표로 합니다. 즉, 객체를 다시 생성하거나 디버깅에 사용할 수 있는 "공식적인" 표현입니다.
2. 결과
str()
: 객체의 내용을 요약하거나 좀 더 사용자 친화적인 방식으로 표현합니다. 예를 들어, 날짜 객체는str()
을 통해 "2024-07-10"과 같이 표시될 수 있습니다.repr()
: 객체의 타입, 속성 값 등을 포함하여 객체를 정확하게 나타내는 것을 목표로 합니다. 예를 들어, 날짜 객체는repr()
을 통해 "datetime.date(2024, 7, 10)"과 같이 표시될 수 있습니다.
3. 사용 예시
import datetime
today = datetime.date.today()
print(str(today)) # 출력: 2024-07-10
print(repr(today)) # 출력: datetime.date(2024, 7, 10)
4. 사용자 정의 클래스에서의 활용
사용자 정의 클래스를 만들 때, __str__
및 __repr__
메서드를 오버라이딩하여 각각의 동작을 원하는 대로 정의할 수 있습니다.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"{self.name} (나이: {self.age})"
def __repr__(self):
return f"Person(name='{self.name}', age={self.age})"
person = Person("김철수", 30)
print(str(person)) # 출력: 김철수 (나이: 30)
print(repr(person)) # 출력: Person(name='김철수', age=30)
5. 결론
str()
은 객체의 내용을 사용자에게 보여주는 데 적합하고, repr()
은 객체를 명확하게 표현하여 개발자가 사용하거나 디버깅에 활용하는 데 적합합니다. 사용자 정의 클래스를 설계할 때 이 두 메서드를 적절히 활용하면 객체를 더 효과적으로 표현하고 사용할 수 있습니다.
반응형
'언어 > Python' 카테고리의 다른 글
[ Python ] 정규 표현식으로 전화번호 추출하기 (0) | 2024.07.10 |
---|---|
[ Python ] 정규 표현식 사용하기 (0) | 2024.07.10 |
[ Python ] format 함수 사용하기 (0) | 2024.07.10 |
[ Python ] % 포맷 지시자 (0) | 2024.07.09 |
[ Python ] %를 사용한 포맷팅하기 (0) | 2024.07.09 |