파이썬 __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__()
메서드의 작동 방식을 이해해 보십시오.
위의 코드에서는 Point
라는 클래스를 정의합니다. 이 클래스는 .__repr__()
및 .__str__()
메서드를 정의하여 객체를 표시하는 방법을 제어합니다. .__repr__()
메서드는 프로그래머를 위한 공식적인 문자열 표현을 제공하며, .__str__()
메서드는 사용자를 위한 비공식적인 문자열 표현을 제공합니다.
이제 이 클래스의 객체를 만들고 출력해 보겠습니다.
이 코드는 다음과 같이 출력됩니다.
repr()
함수는 .__repr__()
메서드의 문자열 표현을 반환하며, str()
함수는 .__str__()
메서드의 문자열 표현을 반환합니다.
이를 통해 .__repr__()
과 .__str__()
메서드가 서로 다른 대상을 위해 문자열 표현을 제공하는 방법을 보았습니다. 이 메서드들을 사용하여 클래스를 정의하고 프로그램을 작성하는 경우에는 객체의 문자열 표현을 제어할 수 있습니다. 이를 통해 프로그래머와 사용자 모두가 예상과 일치하는 정보를 얻을 수 있습니다.
또한 맞춤형 클래스에서 .__repr__()
및 .__str__()
메서드를 정의해야 할 때 언제 사용해야 하는지 알아보겠습니다.