콘텐츠로 건너뛰기

파이썬 __repr__ 메서드의 사용 방법과 고치는 방법

[

__repr__ 메서드와 __str__ 메서드의 사용 시기

많은 컴퓨터 프로그램은 데이터를 표시하는 것이 가장 일반적인 작업 중 하나입니다. 이 정보는 종종 프로그램의 사용자에게 표시됩니다. 그러나 프로그램은 개발 및 유지 보수를 담당하는 프로그래머에게도 정보를 제공해야 합니다. 프로그래머가 객체에 대해 필요로 하는 정보는 동일한 객체를 사용자에게 표시할 때와 다릅니다. 여기서 .__repr__().__str__()이 등장합니다.

파이썬 객체에는 특정 동작을 제공하는 여러 가지 특수 메서드가 있습니다. 이러한 메서드 중 두 가지 유사한 메서드는 문자열 표현을 사용하여 객체를 설명합니다. 이러한 메서드는 .__repr__().__str__()입니다. .__repr__() 메서드는 코드를 유지 및 디버그해야 하는 프로그래머를 위해 자세한 설명을 제공합니다. .__str__() 메서드는 프로그램의 사용자를 위해 정보와 함께 더 간단한 설명을 제공합니다.

.__repr__().__str__()은 모든 클래스에 정의할 수 있는 두 개의 특수 메서드 중 하나입니다. 이 메서드들은 print() 함수, 형식화된 문자열 및 대화형 환경과 같은 여러 가지 일반적인 출력 형태에서 프로그램이 객체를 표시하는 방식을 제어할 수 있습니다.

이 튜토리얼에서는 .__repr__().__str__()을 구분하는 방법과 이러한 특수 메서드를 사용하는 방법을 배우게 됩니다. 이 메서드들을 정의함으로써 작성한 클래스를 더 가독성이 좋고 디버그 및 유지 관리가 쉬운 형태로 만들 수 있습니다. 그래서 파이썬에서 .__repr__() 대신 언제 .__str__를 선택해야 할까요?

요약: 프로그래머를 위한 .__repr__()와 사용자를 위한 .__str__()

특수 메서드 .repr().str()은 모두 객체의 문자열 표현을 반환합니다. 문자열 표현은 객체에 대한 정보를 나타내는 문자열입니다. 이 정보를 프로그램 사용자나 다른 프로그래머와 같은 다른 대상에 적합하게 조정할 수 있습니다.

이름에 이중 밑줄이 선행 및 후행에 포함된 특수 메서드를 다른 클래스에서 정의할 수 있습니다.

객체를 표시하기 위해 두 가지 메서드가 있는 이유는 다음과 같습니다.

  • .__repr__()은 프로그래머를 대상으로 한 객체의 공식적인 문자열 표현을 제공합니다.
  • .__str__()은 프로그램 사용자를 대상으로 한 객체의 비공식적인 문자열 표현을 제공합니다.

.__repr__()이 반환하는 문자열 표현의 대상은 프로그램을 개발하고 유지 관리하는 프로그래머입니다. 일반적으로 객체에 대한 상세하고 모호하지 않은 정보를 제공합니다. 공식적인 문자열 표현의 또 다른 중요한 특성은 프로그래머가 보통 원래 객체와 동일한 객체를 재생성하는 데 사용할 수 있다는 것입니다.

.__str__() 메서드는 프로그램 사용자를 대상으로 한 문자열 표현을 제공합니다. 이 표현은 사용자가 Python 프로그래머일 필요는 없지만 모든 사용자가 이해할 수 있도록 합니다.

다음과 같이 간단한 예를 통해 .__repr__().__str__() 메서드의 작동 방식을 이해해 보십시오.

class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __repr__(self):
return f"Point(x={self.x}, y={self.y})"
def __str__(self):
return f"The point is at x={self.x} and y={self.y}"

위의 코드에서는 Point라는 클래스를 정의합니다. 이 클래스는 .__repr__().__str__() 메서드를 정의하여 객체를 표시하는 방법을 제어합니다. .__repr__() 메서드는 프로그래머를 위한 공식적인 문자열 표현을 제공하며, .__str__() 메서드는 사용자를 위한 비공식적인 문자열 표현을 제공합니다.

이제 이 클래스의 객체를 만들고 출력해 보겠습니다.

point = Point(3, 5)
print(repr(point))
print(str(point))

이 코드는 다음과 같이 출력됩니다.

Point(x=3, y=5)
The point is at x=3 and y=5

repr() 함수는 .__repr__() 메서드의 문자열 표현을 반환하며, str() 함수는 .__str__() 메서드의 문자열 표현을 반환합니다.

이를 통해 .__repr__().__str__() 메서드가 서로 다른 대상을 위해 문자열 표현을 제공하는 방법을 보았습니다. 이 메서드들을 사용하여 클래스를 정의하고 프로그램을 작성하는 경우에는 객체의 문자열 표현을 제어할 수 있습니다. 이를 통해 프로그래머와 사용자 모두가 예상과 일치하는 정보를 얻을 수 있습니다.

또한 맞춤형 클래스에서 .__repr__().__str__() 메서드를 정의해야 할 때 언제 사용해야 하는지 알아보겠습니다.