Освойте Python на курсе от Skypro. Вас ждут 400 часов обучения и практики (достаточно десяти часов в неделю), подготовка проектов для портфолио, индивидуальная проверка домашних заданий и помощь опытных наставников. Получится, даже если у вас нет опыта в IT.
Часто при работе с объектами в Python возникает потребность в представлении объектов в виде строк. Это может быть полезно для отладки, логирования или просто для вывода информации о объекте. В Python для этого существуют два специальных метода: __str__ и __repr__.
Предположим, что есть класс Cat, который имеет атрибуты name и age. Можно было бы представить объект этого класса в виде строки следующим образом:
class Cat:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f'Cat(name={self.name}, age={self.age})'
Тогда при попытке преобразовать объект класса Cat в строку, будет получено представление объекта в виде Cat(name=Fluffy, age=5).
Однако, что если нужно получить более детальное или иное представление объекта, которое будет удобно использовать для отладки или логирования? Здесь на помощь приходит метод __repr__.
Метод __repr__ предназначен для создания «официального» строкового представления объекта, которое может быть использовано для воссоздания объекта при помощи функции eval(). Вернувшись к нашему примеру с классом Cat, можно добавить метод __repr__ следующим образом:
class Cat:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f'Cat(name={self.name}, age={self.age})'
def __repr__(self):
return f'Cat(name={self.name!r}, age={self.age!r})'
Теперь при вызове repr() для объекта класса Cat, будет получено представление объекта в виде Cat(name='Fluffy', age=5), которое может быть использовано для воссоздания объекта.
Важно отметить, что если для класса определен только метод __repr__, то он будет использован и при вызове str(). Однако, если определены оба метода, __str__ и __repr__, то при вызове str() будет использован __str__, а при вызове repr() — __repr__.
Итак, главное отличие между __str__ и __repr__ в Python заключается в их назначении: __str__ предназначен для создания «приятного» для чтения представления объекта, в то время как __repr__ предназначен для создания «официального» представления, которое может быть использовано для воссоздания объекта.
Изучайте Python на онлайн-курсе от Skypro «Python-разработчик». Программа рассчитана на новичков без опыта программирования и технического образования. Курс проходит в формате записанных коротких видеолекций. Будет много проверочных заданий и мастер-классов. В конце каждой недели — живая встреча с экспертами в разработке для ответов на вопросы и разбора домашек.
Перейти в телеграм, чтобы получить результаты теста





Забрать
Добавить комментарий