Какой метод вызывает Python при `print(obj)` и при `repr(obj)`? Зачем определять оба?
Pythonhardsenior
Варианты ответа
print() вызывает __str__ (для людей, читаемо), repr() вызывает __repr__ (для разработчиков, однозначно). Если __str__ не определён — fallback на __repr__. Repr должен давать строку для eval()
print() и repr() оба вызывают __str__ — это синонимы для одного метода. __repr__ deprecated с Python 3.5 в пользу унифицированного __format__. Современный код должен использовать только __str__
print() вызывает __format__ который сам делегирует к __str__ или __repr__ в зависимости от спецификатора. repr() вызывает __dict__ и форматирует attributes автоматически без переопределения
print() вызывает __display__ — метод появившийся в Python 3.10 для красивой печати. repr() вызывает __debug__. Оба наследуются от object и обычно не требуют переопределения в user классах
Разбор ответа
Подробный разбор с объяснением «почему правильный ответ верный» и почему остальные неверны — после регистрации.
2475 вопросов с разбором, quiz-режим с проверкой, AI-собес и подготовка к интервью аналитика.