Sobes.tech
Back to questions
Junior — Middle
55

Можете объяснить назначение и работу метода __new__ в Python?

Answer from AI

sobes.tech AI

Метод __new__ в Python отвечает за создание нового экземпляра класса. Это статический метод, который вызывается перед __init__ и выделяет память под объект.

Основные моменты:

  • __new__ получает класс в качестве первого аргумента и должен вернуть новый объект этого класса (обычно вызывается super().__new__(cls)).
  • Используется, когда нужно контролировать процесс создания объекта, например, при реализации паттерна Singleton или создания неизменяемых объектов.
  • После создания объекта __init__ инициализирует его.

Пример:

class MyClass:
    def __new__(cls, *args, **kwargs):
        print("Создаётся объект")
        instance = super().__new__(cls)
        return instance

    def __init__(self, value):
        print("Инициализация объекта")
        self.value = value

obj = MyClass(10)

Вывод:

Создаётся объект
Инициализация объекта