TGViewer
Python: задачки и вопросы Python: задачки и вопросы @quiz_python · 6.9K subscribers
Post #4926 155
Разберём два выражения

1️⃣Объект p принадлежит классу Price. Метод __repr__ возвращает строку DEBUG, а __format__ — PUBLIC.

2️⃣В выражении f"{p}" Python вызывает p.__format__(""). Пустая строка означает, что после двоеточия не задан формат. Наш метод возвращает PUBLIC.

3️⃣В выражении f"{p!r}" сначала вызывается repr(p). Получается строка DEBUG, после чего форматирование применяется уже к этой строке. Метод Price.__format__ здесь не вызывается.

4️⃣Оба результата передаются в print, который разделяет их пробелом. Итоговый вывод: PUBLIC DEBUG.

Почему это важно
Класс может по-разному представлять объект в отчёте и при отладке. Например, __format__ выводит цену с валютой, а __repr__ показывает данные для диагностики. Добавление !r меняет путь преобразования, поэтому его нельзя считать просто декоративной пометкой.
More from @quiz_python
  1. Oct 13, 2026Post #4925
  2. Oct 13, 2026🧑‍💻 Какие навыки помогают вам в разработке в 2026 году? Что вы чаще используете в работе…
  3. Oct 12, 2026Разбор по шагам 1️⃣Список services содержит три строки: "api/v2", "db" и "auth". 2️⃣Выраже…
  4. Oct 12, 2026Post #4922
  5. Oct 11, 2026Шаблон и условие — по очереди 1️⃣Изначально status содержит строку old. Конструкция match…
  6. Oct 11, 2026Post #4920
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 →