Назад к вопросам
Junior — Middle
44
В каком порядке происходит вызов методов __new__ и __init__ при создании объекта класса в Python?
Ответ от нейросети
sobes.tech AI
Что хотят услышать интервьюеры:
Сначала вызывается метод __new__, который отвечает за создание нового объекта, затем вызывается __init__, который инициализирует уже созданный объект. __new__ возвращает экземпляр класса, а __init__ настраивает его состояние.
Определение:
__new__ — это статический метод, который создает и возвращает новый экземпляр класса. __init__ — это метод инициализации, который вызывается после создания объекта и настраивает его атрибуты.
Пример использования:
class MyClass:
def __new__(cls, *args, **kwargs):
print("Вызов __new__")
instance = super().__new__(cls)
return instance
def __init__(self, value):
print("Вызов __init__")
self.value = value
obj = MyClass(10)
Пояснение кода:
- При создании объекта
MyClass(10)сначала вызывается__new__, который создает пустой объект класса. __new__возвращает этот объект.- После этого вызывается
__init__, который инициализирует объект, присваивая значение атрибутуvalue. - В итоге объект готов к использованию с заданными параметрами.
Ключевые моменты:
__new__отвечает за создание объекта,__init__— за его инициализацию.__new__вызывается первым и должен вернуть экземпляр класса.__init__вызывается после__new__и не возвращает объект, а только настраивает его.- Обычно переопределяют
__init__,__new__— реже, например, для создания синглтонов или immutable объектов.