According to the official Python documentation, __repr__ is a built-in function used to compute the “official” string reputation of an object, while __str__ is a built-in function that computes the “informal” string representations of an object. So both __repr__ and __str__ are used to represent objects, but in different ways. The best way to understand the difference between these two functions is to see them in action:
The returns of repr() and str() are identical for int x, but there’s a difference between the return values for str y — one is formal and the other is informal. One of the most important differences between the formal and informal representations is that the default implementation of __repr__ for a str value can be called as an argument to eval, and the return value would be a valid string object, like this:
If you try to call the return value of __str__ as an argument to eval, the result won’t be valid.
Recommended Python Training
Course: Python 3 For Beginners
Over 15 hours of video content with guided instruction for beginners. Learn how to create real world applications and master the basics.