Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 str() 대 repr() 함수 설명


공식 Python 문서에 따르면 __repr__은 객체의 "공식" 문자열 표현을 찾는 데 사용되고 __str__은 개체의 "비공식" 문자열 표현을 찾는 데 사용됩니다. print 문과 str() 내장 함수는 __str__을 사용하여 객체의 문자열 표현을 표시하는 반면 repr() 내장 함수는 __repr__을 사용하여 객체를 표시합니다. 두 가지 방법이 실제로 무엇을 하는지 이해하기 위해 예를 들어 보겠습니다.

날짜/시간 개체를 만들어 보겠습니다. −

>>> import datetime
>>> today = datetime.datetime.now()
When I use the built-in function str() to display today:
>>> str(today)
'2018-01-12 09:21:58.130922'

사용자가 날짜와 시간을 이해할 수 있도록 날짜가 문자열로 표시되었음을 알 수 있습니다. 이제 내장 함수 repr()−

을 사용할 때를 봅시다.
>>> repr(today)
'datetime.datetime(2018, 1, 12, 9, 21, 58, 130922)'

이 또한 문자열을 반환했지만 문자열은 datetime 개체의 "공식" 표현이었고, 이는 이 "공식" 문자열 표현이 개체를 재구성할 수 있음을 의미합니다 -

>>> eval('datetime.datetime(2018, 1, 12, 9, 21, 58, 130922)')
datetime.datetime(2018, 1, 12, 9, 21, 58, 130922)

eval() 내장 함수는 문자열을 받아 datetime 객체로 변환합니다.

따라서 일반적으로 우리가 코딩하는 모든 클래스에는 __repr__이 있어야 하며 datetime의 경우처럼 객체의 문자열 버전을 갖는 것이 유용하다고 생각하면 __str__ 함수를 만듭니다.