str, __str__
str은 입력 받은 객체의 문자열 버전을 반환하는 함수다.
이때 주목할 점은 str은 사실 내장 함수가 아니고, 파이썬 기본 내장 클래스라는 것이다.
repr, __repr__
repr은 'Representation'의 약자로 이 단어는 '표현하다'라는 뜻을 가지고 있습니다.
표현은 어떤 객체의 '본질'보다는 외부에 노출되는, 사용자가 이해할 수 있는 객체의 모습을 표현합니다.
repr 함수는 어떤 객체의 '출력될 수 있는 표현'(printable representation)을 문자열의 형태로 반환합니다. 다시 말해 객체를 설명해줄 수 있는, 그리고 화면에 출력될 수 있는 문자열 표현을 반환하는 것입니다.
어떤 객체를 인자로 해서 repr 함수를 실행하면 해당 객체의 클래스에 정의된 __repr__를 실행해 그 결과를 반환합니다.
__str__, __repr__의 공통점
다음 두 장에서는 이 둘의 공통점과 차이점에 대해 다룹니다. 이 둘은 차이점이 더 아리송한데 공통점을 다루는 것도 의미가 있습니다.
- 두 메소드는 객체의 문자열 표현을 반환합니다.
두 메소드는 객체가 어떤 데이터 타입이든간에 객체의 문자열 표현을 반환합니다.
차이점
- __str__는 태생적인 목적 자체가 인자르 '문자열화'해 반환하라는 것입니다. 평문 문자는 Universal Interface이기 때문에, 서로 다른 데이터 타입이 상호작용하는 좋은 인터페이스가 됩니다.
따라서 __str__의 본질적인 목적은 객체를 '표현'(representation)하는 것보다는 추가적인 가공이나 다른 데이터와 호환될 수 있도록 문자열화하는 데 있다고 볼 수 있습니다.
Reference
- https://shoark7.github.io/programming/python/difference-between-__repr__-vs-__str__
'Programming > Python' 카테고리의 다른 글
[Python] 파일 이동, 복사, 폴더 이동 (0) | 2023.01.19 |
---|---|
Numba (0) | 2023.01.06 |
joblib 설명 (0) | 2022.04.24 |
비트마스킹 (0) | 2022.04.14 |