Sobes.tech
Junior — Middle
104

Pythonда объекттерди түзүү жана баштоо процессинде __new__ жана __init____ методдору кандай айырмаланат?

Кайсыл жерде компаниялар сурады
СБЕР Бизнес
АэрофлотАэрофлот
РунитиРунити
Леста
СБЕР РоботыСБЕР Роботы

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