Programming

; develop a program

Back-End/Python

[Python] 주요 특수 메소드 – 문자열 표현

Clloud_ 2022. 9. 28. 12:19
반응형

이번 포스팅에서는 파이썬의 특수 메소드 중  문자열 표현 시 사용하는 메소드에 대하여 공부를 해보고자 한다.

 


__repr__ 메소드

인스턴스(instance)를 문자열로 바꿀 때 사용할 문자열 값을 만들어 반환한다

__repr__(self)

 

내장 함수 repr( )에 전달되면 반환될 문자열로 다시 eval( )에 전달하면 원래 Instance로 변환될 수 있는 문자열로 반환한다.

대화형 IDE에서 변수를 값을 출력할 때 호출하는 메소드

더보기

eval(문자열 표현식) 함수는 문자열의 표현식을 평가해서 실행한다.

 

 

__str__ 메소드

__repr( )__ 과 비슷하게 인스턴스(instance)를 문자열로 바꿀 때 사용할 문자열 값을 반환(return)한다.

__str__(self)

 

내장 함수 str( ) 나 출력 함수에 의해 호출된다.
출력 시 객체에 __str( )__이 없으면 __repr( )__이 호출된다.

주로 인스턴스(instance)의 속성 값들을 하나의 문자열로 합쳐 리턴하도록 구현한다.

 

 

예제 1

순서 1. Test 클래스를 정의한다.

순서 2. __init__ 메소드로 생성자를 생성한다.

순서 3. __str__ 메소드로 객체를 생성한다.

순서 4. __repr__ 메소드로 객체를 생성한다.

class Test:

    def __init__(self, num):
        self.num = num

    def __str__(self):
        return f"속성 num의 값은 {self.num}입니다."

    def __repr__(self):
        return f"Test({self.num})"

Test 클래스를 선언하고 str( )/repr( ) 메소드를  호출한다.

t = Test(100)
print(str(t))

a = repr(t)
print(type(a))
a

eval('a')

[실행결과]

속성 num의 값은 100입니다.
<class 'str'>
'Test(100)'
Test(100)

 

예제 2

순서 1. Person 클래스를 정의한다.

순서 2. __init__ 메소드로 생성자를 생성한다.

순서 3. __str__ 메소드로 객체를 생성한다.

순서 4. __repr__ 메소드로 객체를 생성한다.

class Person:

    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return f"이름: {self.name}, 나이: {self.age}"

    def __repr__(self):
        return f"Person('{self.name}', {self.age})"

Test 클래스를 선언하고 str( )/repr( ) 메소드를  호출한다.

p = Person('홍길동', 20)
print(p)

s = repr(p)
print(s, type(s))

p_copy = eval(s)
str(p_copy)

[실행결과]

이름: 홍길동, 나이: 20
Person('홍길동', 20) <class 'str'>
'이름: 홍길동, 나이: 20'

 


반응형