Python의 __str__
메소드는 객체의 인간이 읽을 수 있는 표현을 제공하기 위해 커스텀 클래스에서 오버라이드할 수 있는 내장 함수입니다. 객체를 출력하거나 str()
함수를 사용해 객체를 문자열로 변환할 때, Python은 자동으로 해당 객체의 클래스의 __str__
메소드를 호출합니다.
__str__
을 사용하는 이유:__str__
메소드를 사용하는 주된 이유는 코드의 이해성을 향상시키기 위해서, 특히 디버깅할 때 유용합니다. 커스텀 __str__
메소드 없이 객체를 출력하면 객체의 메모리 주소를 포함한 덜 정보적인, 일반적인 표현이 결과로 나타나며, 이는 객체의 상태나 속성을 이해하는 데 종종 도움이 되지 않습니다.
__str__
구현 방법:__str__
메소드를 구현하려면 클래스 내에 이를 정의합니다. 이 메소드는 객체를 의미 있는 방식으로 나타내는 문자열을 반환해야 합니다. 개념을 명확히 하기 위한 예시는 다음과 같습니다:
class Book:
def __init__(self, title, author):
self.title = title
self.author = author
def __str__(self):
return f"'{self.title}' by {self.author}"
# Book 인스턴스 생성
my_book = Book("The Great Gatsby", "F. Scott Fitzgerald")
# Book 인스턴스 출력
print(my_book) # 출력: 'The Great Gatsby' by F. Scott Fitzgerald
이 Book
클래스 예시에서, __str__
메소드는 책의 제목과 저자를 포함한 문자열을 반환합니다. Book
클래스의 인스턴스를 출력하면 일반 객체 표현 대신 잘 포맷된 문자열을 얻게 됩니다.
print()
함수와 str()
함수에 의해 자동으로 호출됩니다.이 메소드는 클래스의 사용성과 가독성을 향상시켜 Python 코드를 더 직관적이고 유지보수하기 쉽게 만듭니다.