[Python] repr
__repr__ 은 클래스에 쓸 수 있는 special method 중 하나이다. 기능은 객체를 사람이 이해할 수 있는 평문으로 표현해준다.
클래스를 정의하고, 그 인스턴스를 print()로 출력하면 그 객체의 메모리 주소만 출력된다.
class A:
pass
a = A()
print(a)
<__main__.A object at 0x000001C5741EE500>
이 출력결과는 분명 인간이 보기에는 이해할 수 없는 구문일 것이다. 이를 __repr__를 통해서 인간이 이해할 수 있는 평문이 출력되도록 해주는 것이다.
class A:
pass
class B:
def __repr__(self):
return "This is from B class"
a = A()
print(a)
b = B()
print(b)
<__main__.A object at 0x0000015E557FE320>
This is from B class
즉, 해당 클래스의 인스턴스가 print() 함수의 인자로 넘겨질 경우, 해당 인스턴스를 설명해주는 문자열을 출력해주는 기능을 __repr__가 제공해주는 것이다.
__str__ 도 객체의 문자열 표현을 반환한다. print() 함수의 인자로 넘겨질 때 그렇게 해준다.
class A:
def __str__(self):
return "hello, this is from __str__"
a = A()
print(a)
hello, this is from __str__
그러나 __str__ 와 __repr__ 의 차이점은 __str__은 인간이 이해할 수 있는 문자열의 표현이 아닌 “문자열화” 그 자체에 있다. 즉, 다른 데이터와 호환되도록 하거나 다른 객체끼리 정보를 주고 받는 등의 목적을 위해 존재하는 것이고, __repr__은 “표현” 그 자체에 초점을 맞춰 객체를 인간이 이해하기 쉬운 문장으로 설명해주는 역할이다. 즉, “문자열화”라는 기능 자체는 같으나 “목적” 자체가 다르다는 게 차이점이다.
Reference
[1] [Python] __str__와 __repr__의 차이 살펴보기
[2] [Python] 내장 함수 __str__, __repr__
This content is licensed under
CC BY-NC 4.0
댓글남기기