이번 포스팅에서는 파이썬의 특수 메소드 중 문자열 표현 시 사용하는 메소드에 대하여 공부를 해보고자 한다.
__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'
'Back-End > Python' 카테고리의 다른 글
[Python] 클래스(class) 메소드와 정적(static) 메소드 (0) | 2022.09.29 |
---|---|
[Python] 주요 특수 메소드 – 비교 연산자 관련 표현 (2) | 2022.09.28 |
[Python] 주요 특수 메소드 – 객체 생성/소멸 (0) | 2022.09.28 |
[Python] 특수 메소드 (0) | 2022.09.28 |
[Python] super 함수 (0) | 2022.09.27 |