본문 바로가기

파이썬

파이썬의 str 메서드 (__str__)

__str__ 메서드는 우리가 만든 객체를 출력할 때, 객체가 어떤 문자열로 표현될지를 정의한다. 만약 __str__ 메서드를 사용하지 않으면, 출력 값은 사람이 이해하기 어려운 메모리 주소 형태로 나타나게 된다. 따라서 이 메서드는 값을 사람이 쉽게 이해할 수 있도록 문자열 형태로 변환하기 위해 사용되는 메서드이다.

 

이해를 돕기 위해 강아지의 입양 정보를 담은 클래스를 예로 들어보자.

먼저 __str__ 메서드 없이 강아지 클래스를 만들면 어떻게 되는지 아래 코드문을 통해 살펴볼 수 있다 

 

str 메서드 없이 구현 

class Puppy:
    def __init__(self, name, age, breed):
        self.name = name
        self.age = age
        self.breed = breed

ruffus = Puppy("Ruffus", 0.1, "Beagle")
print(ruffus)

 

이 코드를 실행하면 ruffus 객체의 메모리 주소가 출력된다. 메모리 주소만 보면 어떤 값이 들어있는지 알기 어렵다. 

 

이제 __str__ 메서드를 추가해보자.

class Puppy:
    def __init__(self, name, age, breed):
        self.name = name
        self.age = age
        self.breed = breed
    
    def __str__(self):
        return f"Puppy: {self.name}, Age: {self.age}, Breed: {self.breed}"

ruffus = Puppy("Ruffus", 0.1, "Beagle")
print(ruffus)

 

이 코드를 실행하면 ruffus 객체가 다음과 같이 출력된다.

Puppy: Ruffus, Age: 0.1, Breed: Beagle

 

이제 우리가 만든 강아지 객체가 훨씬 더 이해하기 쉬운 형태로 출력된다.