파이썬 기초 중 가장 헷갈리는 부분이 문자열이라고 생각한다. 해석하는 주체(인간, 기계)에 따라 접근하는 방법이 다르기 때문이다. 이런 str과 repr에 대해 이야기하기 전에 먼저 이해해야할 개념으로 magic method가 있다.
파이썬 클래스는 여러가지 Magic Method를 가진다.예를 들어 __init__, __add__, __str__, __repr__ 등이 있다. 각각은 클래스 내부에 정의되고, 보통의 메소드와 달리 특별한 방식(차례로 클래스명(...), +, print, 객체명)으로 호출된다. 참조: 어쩐지 오늘은 velog Python Magic Method 사용법
help(str)
class A :
def __str__(self): # “informal” string representation of instances
return 'str method' # return이 항상 str클래스의 객체이다.
def __repr__(self): # “official” string representation of an object
return 'repr method' # return이 항상 str클래스의 객체이다.
a = A()
repr(a) # __repr__의 리턴값
a # __repr__의 리턴값을 display
str(a) # __str__의 리턴값으로 str클래스의 객체를 생성
print(a) # __str__의 리턴값을 display
문자열 Formatting을 사용할 때 새로운 표현이 등장한다. ' '!r, ' '!s, ' '!a 등이다. 이는 단순히 해당 문자열을 다룰 때 __str__과 __repr__중 어떤 메소드의 결과값을 사용할 것인가에 대한 선택이다.
f'{a!r} is repr' # __repr__의 리턴값
f'{a!s} is str' # __str__의 리턴값
f'{a} is str' # __str__의 리턴값
이상으로 str과 repr의 차이점에 대해 간단히 알아보았다. :)
좋아요를 꾸욱 눌러봅시다 :^)