Python에서 `__repr__`의 목적은 무엇이며 `__str__`과 어떻게 다릅니까?

Susan Sarandon
풀어 주다: 2024-11-03 18:41:29
원래의
516명이 탐색했습니다.

What is the purpose of `__repr__` in Python and how does it differ from `__str__`?

대표자 공개: 대표자의 수수께끼 탐구

Python의 방대한 객체 지향 생태계는 다음과 같이 장식됩니다. 다각적인 던더 방법 제품군으로, 각 방법은 특정 요구 사항을 충족하도록 세심하게 설계되었습니다. 이 판테온 중에는 불가사의한 __repr__이 있습니다. 이 __repr__은 신비에 싸여 있고 대상 표현 영역에 중요한 존재입니다.

자신이 __repr__의 수수께끼를 푸는 임무를 맡은 용감한 조사자라고 생각해 보세요. 귀하의 탐구는 제시된 복잡한 코드 조각의 예시와 같이 해부학적 조사로 시작됩니다.

<code class="python">def __repr__(self):
  return '<%s %s (%s:%s) %s>' % (
    self.__class__.__name__, self.urlconf_name, self.app_name,
    self.namespace, self.regex.pattern)</code>
로그인 후 복사

repr의 비밀스러운 구문에는 심오한 목적이 숨겨져 있습니다. 이는 사물의 본질을 읽을 수 있는 형식으로 정제하는 묘사인 내면의 자아를 식별할 수 있는 표현으로 표현하는 능력을 사물에 부여합니다. 이 표현은 단순한 시각적 매력의 한계를 초월합니다. 이는 물체를 재현하기 위한 청사진 역할을 하며 물체가 상징적인 화신에서 부활할 수 있도록 합니다.

repr의 의미는 소생자로서의 역할을 넘어 확장됩니다. 이는 프로그래머가 조작하고 탐색할 수 있는 대화형 놀이터인 대화형 쉘 내에서 개체를 표시하기 위해 선택된 통로입니다. __repr__을 재정의하면 개체가 묘사되는 방식을 사용자 정의하여 개체를 수수께끼 같은 개체에서 이해 가능한 동반자로 변환할 수 있습니다.

그러나 repr의 책임은 str__의 통치에서 끝납니다. 시작됩니다. __repr은 개발자 친화적인 표현을 우선시하는 반면, str은 최종 사용자에게 서비스를 제공하는 역할을 맡습니다. 인간의 감성에 공감하는 표현, 명확하고 간결한 그림을 그리는 해석을 만들고자 합니다.

미묘한 차이를 설명하려면 다음 코드 스니펫을 고려하세요.

<code class="python">class Point:
    def __init__(self, x, y):
        self.x, self.y = x, y
    def __repr__(self):
        cls = self.__class__.__name__
        return f'{cls}(x={self.x!r}, y={self.y!r})'</code>
로그인 후 복사

호출 repr은 개발자를 위한 맞춤형 출력을 생성합니다.

>>> p = Point(1, 2)
>>> print(repr(p))
Point(x=1, y=2)  # Developer-centric representation
로그인 후 복사

반면 str은 보다 사용자 친화적인 변환을 생성합니다.

>>> print(str(p))
(1, 2)  # User-friendly representation
로그인 후 복사

따라서 repr은 맞춤형 객체 표현을 제작하는 데 없어서는 안 될 도구이자 디버깅 및 내부 검사를 위한 도구로 등장합니다. 사물의 내부 작용을 밝혀내고, 사물의 복잡성을 밝히고, 사물의 부활을 촉진합니다. 그 동반자인 __str__은 번역가의 역할을 맡아 인간의 이해에 맞는 형태로 객체를 렌더링합니다. 이러한 던더 메서드는 Python 객체 표현의 생동감 넘치는 태피스트리를 조율하여 개발자가 유익하고 사용자 친화적인 방식으로 객체와 상호 작용할 수 있도록 지원합니다.

위 내용은 Python에서 `__repr__`의 목적은 무엇이며 `__str__`과 어떻게 다릅니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿