프로그래밍언어/파이썬[Error]

[파이썬][Error] 108. <CustomObject> - __str__ method not defined, default object print

about_IT 2025. 6. 1. 00:54
728x90

파이썬 객체를 출력할 때 __str__ 메서드가 정의되어 있지 않으면, 기본적으로 <__main__.ClassName object at 0x...> 형식으로 출력됩니다. 이는 객체가 사람이 읽을 수 있는 문자열 표현을 제공하지 않을 때 나타나는 기본 동작입니다.

특히 로그 출력이나 디버깅 시 객체 정보를 명확하게 출력하고 싶다면 __str__ 또는 __repr__ 메서드를 클래스에 정의해야 합니다.

● 오류 발생 상황 예시

class User:
    def __init__(self, name):
        self.name = name

user = User("Alice")
print(user)

위 코드의 출력은 다음과 같이 나옵니다:

<__main__.User object at 0x7fd8c2c9ffd0>

● 주요 원인

  • __str__ 또는 __repr__ 메서드 미정의
  • 클래스 내부 구조를 문자열로 표현하려는 시도 실패
  • 객체 출력 시 사용자 정의 형식이 필요함

● 해결 방법

  • __str__ 또는 __repr__ 메서드를 정의하여 출력 형식 지정
  • 중요 정보나 속성을 문자열로 반환하도록 구현

● 예시 코드 (정상 출력)

class User:
    def __init__(self, name):
        self.name = name

    def __str__(self):
        return f"User: {self.name}"

user = User("Alice")
print(user)

위 코드를 실행하면 User: Alice가 출력됩니다.

● 결론

파이썬 클래스에서 __str__ 또는 __repr__ 메서드를 정의하지 않으면, 객체는 기본 메모리 주소 형태로 출력됩니다. 사용자 정의 객체의 직관적인 출력을 원한다면 반드시 이 두 메서드를 적절히 구현해주어야 합니다.

728x90