Sobes.tech
Back to questions
Junior — Middle
65

Чем отличаются методы __new__ и __init__ в процессе создания и инициализации объектов в Python?

Companies where asked
СБЕР Бизнес
АэрофлотАэрофлот
РунитиРунити
Леста
СБЕР РоботыСБЕР Роботы

Answer from AI

sobes.tech AI

Методы __new__ и __init__ в Python отвечают за разные этапы создания объекта:

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

  • __init__(self, ...) — это метод экземпляра, который отвечает за инициализацию уже созданного объекта. Он вызывается после __new__ и настраивает атрибуты объекта.

Пример:

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)

Вывод будет:

Создаем объект
Инициализируем объект

Таким образом, __new__ отвечает за выделение памяти и создание объекта, а __init__ — за настройку его состояния.