Что возвращает метод `__repr__`?

Метод __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.

0