TGViewer
Библиотека питониста | Python, Django, Flask Библиотека питониста | Python, Django, Flask @pyproglib · 37.3K subscribers
Post #7528 2.68K
🐍 `__str__` vs `__repr__`: два лица одного объекта

Вы наверняка видели это в консоли: <__main__.Point object at 0x10f3a2c50>.

Это стандартный ответ Python, который абсолютно бесполезен и для пользователя, и для разработчика при отладке.

Но в Python есть два метода, которые превращают этот «мусор» в понятные данные.

🔹 __str__() — Для людей

Этот метод вызывается функциями print() и str(). Его цель — выдать максимально чистое, красивое и читаемое описание объекта.

🔹 __repr__() — Для разработчиков

Этот метод вызывается в REPL-консоли, отладчиках и внутри коллекций (например, когда вы печатаете список объектов). Его цель — однозначность.

Идеальный __repr__ должен выглядеть как код, который можно скопировать и вставить, чтобы воссоздать этот же объект.

Золотое правило реализации:
1. Всегда реализуйте __repr__()**. Если вы не определили __str__, Python автоматически использует __repr__ как запасной вариант.
2. Добавляйте __str__() только тогда, когда вам нужно «причесать» вывод для конечного пользователя.

Реальный пример (Data Model):

class Product:
def __init__(self, name, price):
self.name = name
self.price = price

def __repr__(self):
# Однозначно: имя класса и параметры
return f"Product(name='{self.name}', price={self.price})"

def __str__(self):
# Красиво: только для пользователя
return f"{self.name} — всего за {self.price}₽"

p = Product("Кофе", 250)
print(p) # Вывод: Кофе — всего за 250₽
print(repr(p)) # Вывод: Product(name='Кофе', price=250)


📍 Навигация: Вакансии • Задачи • Собесы

🐸 Библиотека питониста

#буст
  • ❤ 8
  • 👍 6
More from @pyproglib
  1. Sep 30, 2026🔥 Последний день для разработчиков AI уже пишет код. Теперь важнее научиться встраивать е…
  2. Sep 25, 2026🔥 Курс «ИИ для разработчиков» уже стартовал И мы решили открыть первое занятие всем — мож…
  3. Sep 20, 2026👻 94% токенов уходят не на код Анализ запусков показал: основная часть токенов уходит на…
  4. Sep 19, 2026📚Напоминаем про наш полный курс «Самоучитель по Python для начинающих» Мы написали и собр…
  5. Sep 15, 2026😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как трати…
  6. Sep 15, 2026⏱️ Справочник по Big-O в Python Для тех, кто хочет писать не просто работающий, а эффектив…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →