Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 __str__ 메서드란? 객체 지향 프로그래밍에서 str() 함수의 역할과 활용법

파이썬 객체 지향 프로그래밍에서 str() 함수는 객체를 사람이 읽기 쉬운 문자열 형태로 변환해 주는 역할을 합니다. 이때 핵심이 되는 것이 바로 클래스 내부에 정의되는 __str__ 메서드입니다.


__str__ 메서드란 무엇인가?

__str____init__과 마찬가지로 파이썬이 특별하게 취급하는 특수 메서드(special method)입니다. 이 메서드는 객체의 '비공식적(informal)' 문자열 표현을 반환하도록 정의되며, 주로 디버깅 과정에서 객체의 상태를 빠르게 확인할 때 매우 유용합니다.

__repr__ 메서드가 개발자를 위한 공식적인(unambiguous) 표현을 제공한다면, __str__은 최종 사용자에게 보여주기 적합한 친숙하고 간결한 형태의 문자열을 만든다는 점에서 차이가 있습니다.

__str__ 메서드 구현 예제

다음은 시간 정보를 담는 Time 클래스에 __str__ 메서드를 구현한 코드입니다.

class Time:
    def __init__(self, hour=0, minute=0, second=0):
        self.hour = hour
        self.minute = minute
        self.second = second

    def __str__(self):
        return '%.2d:%.2d:%.2d' % (self.hour, self.minute, self.second)

'%.2d' 포맷 지정자를 사용하면 숫자가 항상 두 자리로 표시되므로, 7시 36분이 07:36:00처럼 깔끔하게 출력됩니다.

print() 호출 시 __str__ 메서드의 동작 원리

객체를 print() 함수로 출력하면, 파이썬은 내부적으로 해당 객체의 __str__ 메서드를 자동으로 호출합니다.

>>> time = Time(7, 36)
>>> print(time)
07:36:00

만약 클래스에 __str__ 메서드를 정의하지 않았다면, 파이썬은 기본적으로 <__main__.Time object at 0x...>와 같이 의미를 알기 어려운 객체 주소 정보를 출력했을 것입니다. 즉, __str__을 잘 활용하면 객체의 정보를 직관적인 문자열로 표현할 수 있습니다.

정리

  • __str__은 객체의 비공식적이고 읽기 쉬운 문자열 표현을 반환하는 특수 메서드입니다.
  • print() 함수나 str() 함수가 호출될 때 파이썬이 자동으로 실행합니다.
  • 디버깅 및 로그 출력 시 객체 상태를 확인하는 데 큰 도움이 됩니다.
  • 참고로 파이썬 3에서는 print가 함수이므로 print(time)처럼 괄호와 함께 사용해야 합니다.