TGViewer
Python вопросы с собеседований Python вопросы с собеседований @python_job_interview · 24.9K subscribers
Post #39 3.88K
Зачем нужен __new__ в Python и каково его практическое применение?

Ответ

Когда вы создаете экземпляр класса, Python сначала вызывает метод __new() для создания объекта, а затем вызывает метод init() __для инициализации атрибутов объекта.

__new() — это статический метод класса объекта. Он имеет следующую сигнатуру:
object.new(class, *args, **kwargs)__

Первый аргумент метода new — это класс нового объекта, который вы хотите создать. Параметры *args и **kwargs должны совпадать с параметрами init() класса. Метод new() также их использует.

Чтобы создать объект класса, нужно вызывать метод super().new().

Практическое применение new

Как правило, init() используется для инициализации вновь созданного объекта, а new() для управления способом создания объекта. Мы также можем использовать new() для инициализации атрибутов объекта, но по логике это должно быть внутри init().

Однако одним из частых практических применений new() является ограничение количества объектов, созданных из класса.

Примеры частных случаев использования new

Создание одноэлементного шаблона (хотя это не единственный способ).
Динамическое расширение классов из внешних модулей без фактического редактирования исходного кода.
Настройка классов в метаклассе (аналогично использованию call)
Расширение неизменяемого класса datetime.datetime. Это нужно, чтобы вернуть текущее время, если он создается без аргументов, и результат вызова strptime для аргумента, если он вызывается с одним строковым аргументом.

@python_job_interview
  • 👍 13
  • 🔥 3
  • ❤ 1
More from @python_job_interview
  1. Oct 5, 2026🖥 Лучшие практики Python 2026: 20 правил для кода в эпоху ИИ 20 практик написания Python-…
  2. Oct 3, 2026Вопросы на собеседовании Python Senior: 100 вопросов с ответами (2026) Вопросы на собеседо…
  3. Oct 2, 2026photo post
  4. Oct 2, 2026🌟 SGLang научил чат-модели отвечать вероятностями Команда открытого движка инференса SGLa…
  5. Oct 1, 2026🖥 Примеры кода на Python 2026: лучшие практики, разбор и задачи с решениями Python пример…
  6. Sep 30, 2026🔥 Почему Python-библиотеки всё чаще пишут критичные части на Rust Например, Pydantic v2 и…
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 →