__str__, __repr__ 차이
10 Nov 2016 | python용법의 차이
- str : 사용자가 보기 쉬운 형태로 보여줄 때 사용하는 것
- repr : 시스템(python interpreter)이 해당 객체를 인식할 수 있는 공식적인 문자열로 나타내 줄 때 사용하는 것
호출 경로
print(a)
하면 __str__
이 불린다.
print([a])
하면 __repr__
이 불린다.
__repr__
만 만들면 __str__
이 호출될 시에 __repr__
이 불린다. 이는 __str__
의 기본 구현이 __repr__
을 부르는 구조라서 그렇다고한다.
쓰는 경우
나의 경우 __str__
은 디버깅용 로그를 작성할 때, __repr__
은 위의 용법에 최대한 맞추되, list를 가진 class이거나 한 경우 그냥 디버깅용으로 쓴다. 이 부분은 더 공부가 필요해보인다.
class dataSchema(object):
def __init__(self, name: str, age: int):
self.setProperty(name, age)
def setProperty(self, name: str, age: int):
self.name = name
self.age = age
def getProperty(self):
if self.age == -1:
raise Exception('not setted.')
return {'name': self.name, 'age': self.age}
def __str__(self):
return "(name : {}, age : {})".format(self.name, self.age)
def __repr__(self):
return "{}(\"{}\", {})".format(self.__class__.__name__, self.name, self.age)