The __repr__() and __str__() methods
Python has two string representations of an object. These are closely aligned with the built-in functions repr(), str(), print(), and the string.format() method.
Generally, the
str()method representation of an object is commonly expected to be more friendly to humans. This is built by an object's__str__()method.The
repr()method representation is often going to be more technical, perhaps even a complete Python expression to rebuild the object. The documentation says:For many types, this function makes an attempt to return a string that would yield an object with the same value when passed to
eval().This is built by an object's
__repr__()method.The
print()function will usestr()to prepare an object for printing.The
format()method of a string can also access these methods. When we use{!r}or{!s}formatting, we're requesting__repr__()or__str__(), respectively.
Let's look at the default implementations first.
The following is a simple class hierarchy...