__repr__
должен возвращать строковое представление объекта, которое, по возможности, является валидным Python выражением, позволяющим воссоздать этот объект. Предназначен для отладки и логирования.Метод __repr__
в Python возвращает строковое представление объекта, которое должно быть однозначным и, в идеале, пригодным для воссоздания объекта. Другими словами, если возможно, результатом repr(obj)
должен быть Python код, который можно выполнить, чтобы получить объект, равный исходному.
Ключевые моменты:
__repr__
- быть информативным для разработчиков. Он должен давать хорошее представление о том, что это за объект, его тип и его атрибуты.MyClass(attribute1, attribute2)
.__str__
не определен, то при вызове str(obj)
вместо него будет использован __repr__
. То есть __repr__
является запасным вариантом для __str__
.Пример:
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __repr__(self):
return f"Point(x={self.x}, y={self.y})"
p = Point(2, 3)
print(repr(p)) # Вывод: Point(x=2, y=3)
В этом примере repr(p)
возвращает строку "Point(x=2, y=3)"
, которую можно использовать для воссоздания объекта Point
.