클래스에 문자열 표현 만들려고 찾아보니 __str__ 도 있고 __repr__ 도 있던데 둘이 언제 어느 게 불리는 건지 구분이 안 됩니다. 그냥 하나만 만들면 안 되나 싶기도 하고요.
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __repr__(self):
return f"Point({self.x}, {self.y})"
def __str__(self):
return f"({self.x}, {self.y})"
p = Point(1, 2)
print(p) # (1, 2)
print(repr(p)) # Point(1, 2)
print([p]) # [Point(1, 2)]
print(p) 하면 __str__ 쪽이 나오는데, 리스트에 담아서 출력하니까 안에 든 건 __repr__ 쪽으로 나오더라고요. 콘솔에서 그냥 p 치고 엔터 쳐도 Point(1, 2) 나오고요. 둘을 각각 언제 쓰라고 나눠놓은 건지, 그리고 하나만 정의한다면 어느 쪽을 남기는 게 맞는지 궁금합니다.