Вопрос
В чём разница между методами __repr__ и __str__ у объекта в Python, для чего предназначен каждый из них, и что должен возвращать «хороший» __repr__?
Направление Python
Голосовые дуэли по Python: модель данных, GIL, asyncio, типизация и другие вопросы с обычного собеседования.
Тренировка и матчи доступны после входа.

Ты и соперник отвечаете на одни и те же вопросы.
В матче 7 вопросов по Python: язык, модель данных, GIL, asyncio, типизация. Тебе и сопернику достаётся один и тот же вопрос.
Говоришь вслух, как на живом собеседовании. Таймер идёт у обоих одинаково. Например: в чём разница между __repr__ и __str__. На ответ 75 секунд.
AI-судья засчитывает смысл, а не формулировку. После раунда видишь ключевые пункты: что засчитано, что упущено. Тут судья ищет, назвал ли ты, что __repr__ нужен разработчику, а __str__ пользователю.
Так выглядят вопрос и разбор в матче. Это пример, не настоящий матч.
В чём разница между методами __repr__ и __str__ у объекта в Python, для чего предназначен каждый из них, и что должен возвращать «хороший» __repr__?
__repr__ предназначен для разработчика: это однозначное, техническое представление объекта, которое использует REPL, отладчик, вывод объекта внутри контейнеров (список печатает repr каждого элемента) и логирование. Хороший __repr__ по возможности похож на код, который восстанавливает объект, например Point(x=1, y=2), и обязательно включает значения полей, которые помогают отличить один экземпляр от другого. __str__ предназначен для конечного пользователя — это читаемое, «человеческое» представление, которое выводят print() и str(). Если __str__ не определён, Python откатывается на __repr__, поэтому у любого класса стоит хотя бы реализовать __repr__; обратное не работает — repr() никогда не вызывает __str__. Ключевое правило: __repr__ должен быть однозначным и полезным для отладки, а не «красивым» — лучше избыточная информация, чем потерянный контекст при разборе продовой ошибки в логах.
Самые частые темы в вопросах по Python. Вопросы простые, такие, как на обычном собеседовании.
Побеждаешь, и рейтинг растёт. Пять ступеней по три дивизиона, старт в Серебре II.