Sobes.tech
Junior — Middle
83

Pythonдогу __str__ жана __repr__ ыкмаларынын максаты эмне жана алар эмнеде айырмаланат?

Кайсыл жерде компаниялар сурады
СБЕР РоботыСБЕР Роботы

AIден жооп

sobes.tech AI

Методы __str__ и __repr__ в Python служат для получения строкового представления объекта, но имеют разные цели:

  • __repr__ предназначен для получения официального строкового представления объекта, которое должно быть максимально информативным и, по возможности, таким, чтобы его можно было использовать для воссоздания объекта (например, через eval). Если это невозможно, возвращается строка с полезной информацией.

  • __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__ — для пользователей.