В чем разница между __str__ и __repr__
Python
Senior
СБЕР Роботы
В чем разница между __str__ и __repr__
Ответы
Оба метода используются для строкового представления объекта, но с разными целями:
`__repr__` - "официальное" строковое представление объекта, предназначенное для разработчиков. Должно быть максимально информативным и однозначным (желательно, чтобы по нему можно было воссоздать объект). Используется при вызове `repr(obj)` и в REPL.
`__str__` - "неформальное" строковое представление для пользователей. Используется при вызове `str(obj)` и `print(obj)`.
Пример:
```
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.