Introduction to the Python __repr__
magic method
__repr__ dunder 메서드는 클래스의 인스턴스를 repr()에 전달할 때의 동작을 정의합니다.
__repr__ 메서드는 개체의 문자열 표현을 반환합니다. 일반적으로 __repr__()는 실행할 수 있고 객체와 동일한 값을 생성할 수 있는 문자열을 반환합니다.
즉, object_name.__repr__() 메서드의 반환된 문자열을 eval() 함수에 전달하면 object_name과 동일한 값을 얻게 됩니다. 예를 살펴보겠습니다.
먼저 세 가지 인스턴스 속성( first_name, last_name , age)을 갖은 Person 클래스를 정의합니다.
class Person:
def __init__(self, first_name, last_name, age):
self.first_name = first_name
self.last_name = last_name
self.age = age
둘째, Person 클래스의 새 인스턴스를 만들고 해당 문자열 표현을 표시합니다.
person = Person('John', 'Doe', 25)
print(repr(person)) # <__main__.Person object at 0x000001F51B3313A0>
기본적으로 출력에는 person 개체의 메모리 주소가 포함됩니다.
개체의 문자열 표현을 사용자 지정하려면 다음과 같이 __repr__ 메서드를 구현할 수 있습니다.
class Person:
def __init__(self, first_name, last_name, age):
self.first_name = first_name
self.last_name = last_name
self.age = age
def __repr__(self):
return f'Person("{self.first_name}","{self.last_name}",{self.age})'
Person 클래스의 인스턴스를 repr()에 전달하면 파이썬은 __repr__ 메서드를 자동으로 호출합니다. 예를 들어:
person = Person("John", "Doe", 25)
print(repr(person)) # Person("John","Doe",25)
클래스가 __str__ 메서드를 구현 하지 않고 해당 클래스의 인스턴스를 str()에 전달하면 내부적으로 __str__ 메서드가 __repr__ 메서드를 호출하기 때문에 Python은 __repr__ 메서드의 결과를 반환합니다. 예를 들어:
person = Person('John', 'Doe', 25)
print(person)
Output:
Person("John","Doe",25)
클래스가 __str__ 메서드를 구현하는 경우 Python은 클래스의 인스턴스를 str()에 전달할 때 __str__ 메서드를 호출합니다. 예를 들어:
class Person:
def __init__(self, first_name, last_name, age):
self.first_name = first_name
self.last_name = last_name
self.age = age
def __repr__(self):
return f'Person("{self.first_name}","{self.last_name}",{self.age})'
def __str__(self):
return f'({self.first_name},{self.last_name},{self.age})'
person = Person('John', 'Doe', 25)
# use str()
print(person)
# use repr()
print(repr(person))
Output:
(John,Doe,25)
Person("John","Doe",25)
__str__
vs __repr__
__str__ Method와 __repr__ Method의 주요 차이점은 대상 고객입니다.
__str__ Method는 사람이 읽을 수 있는 개체의 문자열 표현을 반환하는 반면, __repr__ Method는 컴퓨터가 읽을 수 있는 개체의 문자열 표현을 반환합니다.
Summary
- __repr__ 메서드를 구현하여 repr()이 호출될 때 객체의 문자열 표현을 사용자 정의합니다.
- __str__는 기본적으로 내부적으로 __repr__ 호출 합니다.
'Python Object-oriented Programming' 카테고리의 다른 글
__hash__ Method (0) | 2023.04.03 |
---|---|
__eq__ Method (0) | 2023.04.03 |
__str__ Method (0) | 2023.04.03 |
Private Attributes (0) | 2023.04.03 |
Instance Variables (0) | 2023.04.03 |
댓글