python でクラスの情報を文字列で表示するとき、__str__ メソッドと __repr__ メソッドが使える。
__str__ は、プログラマーとは限らないユーザーに「読める形で情報を表示」することが目的である。
それに対し、__repr__ は、主にプログラマーがデバッグに使えるように、pythonの実行コードのような形の情報を出力することが目的である。
言い換えると、__str__ が readable (読みやすい)ことが目的なのに対し、__repr__ は unambiguous (曖昧でない)ことを目的にしている、という違いがある。
例(python3)
class Dog:
def __init__(self):
self.name = 'イヌ'
self.age = 10
def __repr__(self):
return 'repr:' + self.name
def __str__(self):
return 'str:' + self.name
d = Dog()
print(str(d))
print(repr(d))
結果
str:イヌ
repr:イヌ