PYTHONIC 문자열 다루기: str vs repr

Lightman·2021년 6월 28일
1

CS: PYTHON🐍 & Ⓡ

목록 보기
7/14
post-thumbnail

🎈 쉬어보이는 파이썬 문자열, 왜 헷갈리는거야?

파이썬 기초 중 가장 헷갈리는 부분이 문자열이라고 생각한다. 해석하는 주체(인간, 기계)에 따라 접근하는 방법이 다르기 때문이다. 이런 str과 repr에 대해 이야기하기 전에 먼저 이해해야할 개념으로 magic method가 있다.

📕 Magic Method: def __함수명__

파이썬 클래스는 여러가지 Magic Method를 가진다.예를 들어 __init__, __add__, __str__, __repr__ 등이 있다. 각각은 클래스 내부에 정의되고, 보통의 메소드와 달리 특별한 방식(차례로 클래스명(...), +, print, 객체명)으로 호출된다. 참조: 어쩐지 오늘은 velog Python Magic Method 사용법

🎉 str과 repr의 차이

  • str( )으로 표현되는 str는 함수가 아니라 class이다.
help(str)
  • __str__과 __repr__은 하나의 객체를 문자열로 표현하는 서로 다른 방식이다.
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()
  • str, repr관련 함수를 호출하자.
repr(a)		# __repr__의 리턴값
a		# __repr__의 리턴값을 display

str(a)		# __str__의 리턴값으로 str클래스의 객체를 생성
print(a)	# __str__의 리턴값을 display

문자열 Formatting

문자열 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의 차이점에 대해 간단히 알아보았다. :)

😎 끝.

좋아요를 꾸욱 눌러봅시다 :^)

profile
현직 데이터 분석가 / 데이터 과학의 정도를 따라 🚲 / About DEV DA ML

0개의 댓글