Встречается на собеседованиях • сегодня

В чем разница между __str__ и __repr__

Оба метода используются для строкового представления объекта, но с разными целями:

__repr__ - "официальное" строковое представление объекта, предназначенное для разработчиков. Должно быть максимально информативным и однозначным (желательно, чтобы по нему можно было воссоздать объект). Используется при вызове repr(obj) и в REPL.

__str__ - "неформальное" строковое представление для пользователей. Используется при вызове str(obj) и print(obj).

Пример:

python
class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y
    
    def __repr__(self):
        return f"Point({self.x}, {self.y})"
    
    def __str__(self):
        return f"({self.x}, {self.y})"

p = Point(1, 2)
print(repr(p))  # Point(1, 2)
print(str(p))   # (1, 2)
print(p)        # (1, 2) - использует __str__

Если __str__ не определен, Python использует __repr__ как fallback.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы