콘텐츠로 건너뛰기

파이썬에서의 __str__ 메서드 사용 방법/수정 방법은?

[

이번 튜토리얼에서는 Python 객체를 문자열로 변환하는 한 가지 Pythonic한 방법인 .str()을 살펴보겠습니다. .str()이 의미하는 바를 배우고, Python 클래스에서 어떻게 사용하는지 알아보겠습니다.

.str() 메서드의 이해와 사용 방법

Python 클래스 Car를 예시로 들어서 간단한 예제로 시작하겠습니다. 우선, 아래와 같이 .__str__() 메서드를 추가해 보겠습니다.

class Car:
def __init__(self, color, mileage):
self.color = color
self.mileage = mileage
def __str__(self):
return 'a {self.color} car'.format(self=self)

여기서 메서드 이름 앞뒤로 언더스코어가 두 개 들어간 것을 볼 수 있는데, 이는 두 개의 언더스코어로 메서드를 시작하고 끝내는 것을 의미합니다. 이러한 메서드들은 일명 “던더 메서드”라고도 불리며, Python의 핵심 기능을 나타내는 것입니다.

.__str__() 메서드는 객체가 문자열로 변환될 때 호출되는 메서드입니다. 이 예제에서는 Car 객체를 문자열로 변환할 때, 해당 Car의 색깔을 알려주는 문자열을 반환하도록 정의하였습니다.

my_car = Car('red', 10000)
print(my_car)

위와 같이 my_car 객체를 출력하면 “a red car”라는 결과를 얻을 수 있습니다. 이는 .__str__() 메서드에 의해 반환된 결과입니다.

객체를 문자열로 변환하는 방법

객체를 문자열로 변환하고 싶다면, 내장 함수인 str()을 사용하면 됩니다. str() 함수는 내부적으로 .__str__() 메서드를 호출하여 정확한 결과를 반환합니다. 마찬가지로, print() 함수나 포맷 문자열에서도 내부적으로 str() 함수를 호출하게 됩니다.

만약 Car 객체의 문자열 표현을 직접 제어하고 싶다면, .__str__() 메서드를 정의하여 원하는 결과를 반환하면 됩니다. 이러한 관례적인 방법을 따르면, 객체의 문자열 표현을 더욱 세밀하게 제어할 수 있습니다. 따라서 .__str__() 메서드를 정의하는 것은 Pythonic한 방법이라고 할 수 있습니다.

그러나 한 가지 주의할 점은, .__str__() 메서드를 정의해도 객체를 직접 검사하면 여전히 이전의 결과를 얻게 되는 것입니다. 즉, 콘솔에서 객체를 조사하는 경우에는 여전히 이전의 결과가 나타납니다.

.__str__().__repr__()의 차이점

객체를 문자열로 변환하는 또 다른 방법으로 .__repr__() 메서드를 사용할 수 있습니다. .__repr__() 메서드는 .__str__()과 비슷하게 작동하지만, 좀 더 정확한 객체의 표현을 반환합니다.