Sobes.tech
Junior — Middle
103

Wat is het verschil tussen de methoden __new__ en __init____ in het proces van het maken en initialiseren van objecten in Python?

Bedrijven waar gevraagd werd
СБЕР Бизнес
АэрофлотАэрофлот
РунитиРунити
Леста
СБЕР РоботыСБЕР Роботы

Antwoord van 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__ — за настройку его состояния.