본문 바로가기
Python/study

__str__와 __repr__

by 르면가게 2024. 12. 8.

repr (Representation)

  • 목적:
    • repr 메서드는 객체의 공식적이고 명확한 문자열 표현을 반환합니다.
    • 반환된 문자열은 주로 디버깅이나 개발자용 출력에 사용되며, 가능하다면 해당 문자열로 동일한 객체를 생성할 수 있어야 합니다.
    • 개발자에게 객체의 내부 구조를 명확히 전달하는 것이 목표입니다.
  • 사용:
    • 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!r})"

p = Person("Alice", 30)
print(repr(p))  # 출력: Person(name='Alice', age=30)

str (String)

  • 목적:
    • str 메서드는 객체의 비공식적이고 사용자 친화적인 문자열 표현을 반환합니다.
    • 반환된 문자열은 사용자에게 직접 보여줄 때 사용되며, 읽기 쉽고 자연스러운 형태를 제공합니다.
  • 사용:
    • str() 함수 호출 시 실행됩니다.
    • print() 함수로 객체를 출력하거나, 문자열 포매팅(f"{obj}")에 사용됩니다.
  • 권장 사항:
    • str 메서드는 사용자가 이해하기 쉬운 표현으로 객체를 설명해야 합니다.
    • 필요에 따라 간결하고 요약된 정보를 제공할 수도 있습니다.

예제

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return f"{self.name}, {self.age} years old"

p = Person("Alice", 30)
print(str(p))   # 출력: Alice, 30 years old
print(p)        # 출력: Alice, 30 years old

정리

  • repr:
    • 개발자 친화적, 디버깅 및 개발용.
    • 가능하면 해당 표현을 통해 객체를 다시 생성할 수 있어야 함.
    • 예: Person(name='Alice', age=30)
  • str:
    • 사용자 친화적, 읽기 쉬운 표현.
    • 사용자에게 객체를 설명하거나 출력할 때 사용.
    • 예: Alice, 30 years old

'Python > study' 카테고리의 다른 글

@wrap  (0) 2025.01.15
unittest 모듈  (0) 2024.12.08
@staticmethod  (0) 2024.12.08
ast.literal_eval()  (0) 2024.12.08
subprocess.run()  (0) 2024.12.08