본문 바로가기
대학원 공부/programming language

Python : __str__ vs __repr__ 차이점

by 월곡동로봇팔 2020. 2. 24.
class test:
    def __repr__(self):
        return "done!!"
    def __str__(self):
        return "Not Done!"
    
test_a = test()
print(test_a)

print(str(test_a))

print(repr(test_a))

__str__

  • __str__는 서로 다른 자료형 간에 interface를 제공하기 위해서 존재한다.
  • 객체를 표현, representation 에 있다기보다는 추가적인 가공이나 다른데이터와 호환이 가능하도록 문자열화한다.
  • ex) int, float, list 형태를 print를 같이하면 안되지만, print(a,b,c) 상태로 하면 가능하다.
  • 원래는 TypeError가 떠야 정상이지만, __str__ 메소드를 내부적으록 구현을 하고 있기에 가능하다.
  • 이는 __str__ 형태 때문에 가능한 일이다. python의 장점이다.

__repr__

  • __repr__는 해당 객체를 인간이 이해할 수 있는 표현으로 나타내기 위한 용도이다.
  •  __str__을 정의하지 않을 경우, __repr__이 대신 쓰인다
<class 'nltk.stem.lancaster.LancasterStemmer'>
<class 'nltk.stem.lancaster.LancasterStemmer'>

위처럼 class의 형태가 어떤 것인지 Representation을 해주는 메소드를 __repr__라고 한다.

헷갈리지 말 것.

댓글