>>> class A:
... def __str__(self):
... return "42"
...
>>> a = A()
>>> print(repr(a))
<__main__.A object at 0xb720a4cc>
>>> print(str(a))
42
>>> a
<__main__.A object at 0xb720a4cc>
>>> class A:
... def __repr__(self):
... return "42"
...
>>> a = A()
>>> print(repr(a))
42
>>> print(str(a))
42
>>> a
42
__str__ liefert einen String, bei dem es um eine „schöne“ und einprägsame Ausgabe für den Endbenutzer geht.
__repr__ soll die interne Repräsentation des Objektes widerspiegeln. Der Ausgabestring sollte nach Möglichkeit so sein, dass er wieder geparsed werden kann und ein Objekt gleichen Types wieder zurückliefert.
Folgenes sollte für ein Objekt "o" gelten: o == eval(repr(o))