Давайте на примере рассмотрим разницу в использовании методов __repr__ и __str__.
Результат __str__ должен быть читаемым для человека:
>>> import datetime >>> today = datetime.date.today() >>> str(today) '2021-05-11'
Результат __repr__ должен быть максимально точным:
>>> import datetime >>> today = datetime.date.today() >>> repr(today) 'datetime.date(2021, 5, 11)'
Интерпретатор Python использует __repr__:
>>> import datetime >>> today = datetime.date.today() >>> today datetime.date(2021, 5, 11)
