Какой метод вызывает Python при `print(obj)` и при `repr(obj)`? Зачем определять оба?
Pythonhardsenior
Проверяет знание Python и pandas для анализа данных.
__str____repr__magic-methodspython
Варианты ответа
print() вызывает __str__ (для людей, читаемо), repr() вызывает __repr__ (для разработчиков, однозначно). Если __str__ не определён — fallback на __repr__. Repr должен давать строку для eval()
print() вызывает __display__ — метод появившийся в Python 3.10 для красивой печати. repr() вызывает __debug__. Оба наследуются от object и обычно не требуют переопределения в user классах
print() вызывает __format__ который сам делегирует к __str__ или __repr__ в зависимости от спецификатора. repr() вызывает __dict__ и форматирует attributes автоматически без переопределения
print() и repr() оба вызывают __str__ — это синонимы для одного метода. __repr__ deprecated с Python 3.5 в пользу унифицированного __format__. Современный код должен использовать только __str__
Как разобрать этот вопрос на собеседовании
Подумай, какая структура данных и какой инструмент pandas решают задачу с наименьшей сложностью: векторизация вместо циклов, groupby/merge вместо ручных склеек, корректная работа с NaN и типами. Интервьюер смотрит на читаемость кода и на то, понимаешь ли ты, что происходит «под капотом» — копия или вью, сложность операции, утечки памяти на больших данных.
Это вопрос продвинутого уровня — на собеседовании по нему обычно идут уточняющие follow-up вопросы, поэтому держи в голове крайние случаи и альтернативные решения.
Тема вопроса — «Python». Чтобы подготовиться к похожим задачам, отрабатывай их на практике: python-тренажёр помогает довести навык до автоматизма, а раздел вопросов — увидеть формулировки, которые реально встречаются на интервью аналитика данных.
Разбор ответа
Подробный разбор с объяснением «почему правильный ответ верный» и почему остальные неверны — после регистрации.
3000+ вопросов с разбором, quiz-режим с проверкой, AI-собес и подготовка к интервью аналитика.