Чем отличается метод repr от str в Python?
Answer from AI
sobes.tech AI
Методы __repr__ и __str__ в Python служат для получения строкового представления объекта, но с разными целями:
-
__repr__предназначен для получения официального строкового представления объекта, которое должно быть максимально информативным и, по возможности, таким, чтобы его можно было использовать для воссоздания объекта (например, в интерактивной консоли). Если это невозможно, возвращается строка с полезной информацией. -
__str__предназначен для получения удобочитаемого, понятного пользователю представления объекта, которое используется функциейprint()и функциейstr().
Если __str__ не определён, Python использует __repr__ как запасной вариант.
Пример:
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)
Таким образом, repr ориентирован на разработчиков и отладку, а str — на конечных пользователей.