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

Пост Создание объекта в Python включает два ключевых этапа. Сначала вызывается метод __new__, который создаёт и возвращает но…

16 марта 2026
Б
Библиотека Python разработчика | Книги по питону
Создание объекта в Python включает два ключевых этапа. Сначала вызывается метод __new__, который создаёт и возвращает новый объект. Затем вызывается метод __init__ для инициализации состояния этого объекта. Однако, если __new__ возвращает объект, который не является экземпляром исходного класса, метод __init__ не будет вызван. Это связано с тем, что возвращаемый объект, вероятно, уже создан другим классом, и его __init__ уже был выполнен: class Foo: def __new__(cls, x): return dict(x=x) def __init__(self, x): print(x) # Никогда не вызывается print(Foo(0)) Важно: не следует создавать экземпляры того же класса в __new__ с использованием обычного конструктора (Foo(...)). Это может привести к двойному вызову __init__ или даже к бесконечной рекурсии. Пример бесконечной рекурсии: class Foo: def __new__(cls, x): return Foo(-x) # Рекурсия Пример двойного вызова __init__: class Foo: def __new__(cls, x): if x < 0: return Foo(-x) return super().__new__(cls) def __init__(self, x): print(x) self._x = x Правильный способ: class Foo: def __new__(cls, x): if x < 0: return cls.__new__(cls, -x) return super().__new__(cls) def __init__(self, x): print(x) self._x = x 📲 Мы в MAX 👉@BookPython
12 · 1.6K ·

Рядом в ленте

ББиблиотека Python разработчика | Книги по питонуКак упростить работу с аргументами в командной строке с помощью typer Раньше для CLI-приложений на Python я использовал argparse, потом был click, но недавно поББиблиотека Python разработчика | Книги по питону🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https://max.ru/bash_srv Bash
это сообщение
ББиблиотека Python разработчика | Книги по питонуВстроенные значения float в Python используют оборудование вашего компьютера напрямую, поэтому любое значение представляется внутренне в виде двоичной дроби. ЭтББиблиотека Python разработчика | Книги по питону💡 Как избежать повторения кода с помощью functools.partial Как упростить код и избежать дублирования с помощью functools.partial. Допустим, у нас есть функция s
ББиблиотека Python разработчика | Книги по питонуБиблиотека Python разработчика | Книги по питону@BookPython · канал · Технологии
17 943подписчиков725средний охват поста
Лента площадки Открыть в Telegram

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

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