본문 바로가기

언어/Python

[ Python ] str과 repr 의 차이에 대해서 알아보기

반응형

파이썬에서 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()은 객체를 명확하게 표현하여 개발자가 사용하거나 디버깅에 활용하는 데 적합합니다. 사용자 정의 클래스를 설계할 때 이 두 메서드를 적절히 활용하면 객체를 더 효과적으로 표현하고 사용할 수 있습니다.

반응형