본문 바로가기
Python Object-oriented Programming

__repr__ Method

by 자동매매 2023. 4. 3.

 

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

댓글