프로그래밍언어/파이썬[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