Русский
Открыть в Telegram

Пост Когда вы создаете кастомный метод __repr__ для объекта, обычно нужно включить представление его атрибутов. Однако важно …

31 июля 2026
Б
Библиотека Python разработчика | Книги по питону
Когда вы создаете кастомный метод __repr__ для объекта, обычно нужно включить представление его атрибутов. Однако важно помнить, что нужно явно вызывать repr(), так как форматирование вызывает str() вместо repr(). Пример простого кода: class Pair: def __init__(self, left, right): self.left = left self.right = right def __repr__(self): class_name = type(self).__name__ repr_left = repr(self.left) repr_right = repr(self.right) return f'{class_name}({repr_left}, {repr_right})' Проблема возникает, если вы вызываете repr для объекта, который содержит ссылку на самого себя. Это может привести к рекурсии: In : p = Pair(1, 2) In : p Out: Pair(1, 2) In : p.right = p In : p Out: [...] RecursionError: maximum recursion depth exceeded while calling a Python object Для решения этой проблемы можно использовать декоратор reprlib.recursive_repr, который обрабатывает рекурсивные вызовы: @reprlib.recursive_repr() def __repr__(self): class_name = type(self).__name__ repr_left = repr(self.left) repr_right = repr(self.right) return f'{class_name}({repr_left}, {repr_right})' Теперь код работает корректно: In : p = Pair(1, 2) In : p.right = p In : p Out: Pair(1, ...) 📲 Мы в MAX 👉@BookPython
2 · 1.4K ·

Рядом в ленте

ББиблиотека Python разработчика | Книги по питонуФункция itertools.chain позволяет объединить несколько итерируемых объектов, чтобы работать с ними, как с единым целым: from itertools import chain print(list(cББиблиотека Python разработчика | Книги по питонуВ Python блок else можно использовать не только после if, но и после циклов for и while. Код внутри else выполняется только в том случае, если цикл завершился е
это сообщение
ББиблиотека Python разработчика | Книги по питонуТесты могут требовать временные файлы или директории. Для этого отлично подойдет модуль tempfile. Так как временные файлы обычно нужно удалять после использованББиблиотека Python разработчика | Книги по питонуUTF-8 - это кодировка с переменной длиной. Один символ может быть закодирован с использованием одного, двух, трёх или четырёх байтов. Это означает, что нельзя н
ББиблиотека Python разработчика | Книги по питонуБиблиотека Python разработчика | Книги по питону@BookPython · канал · Технологии
17 954подписчиков552средний охват поста
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем