Встречается на собеседованиях • сегодня

В чем разница между __new__ и __init__

__new__ и __init__ — это два метода, участвующих в создании объекта в Python, но они выполняют разные задачи и вызываются на разных этапах.

Краткая суть:

__new__Создатель (конструктор): создаёт новый пустой объект в памяти и возвращает его.

__init__Инициализатор: наполняет созданный объект данными (атрибутами).

Пример кода:

text
class Example:
    def __new__(cls, *args, **kwargs):
        print("Вызван __new__: Создаём объект")
        # Создаём объект, вызывая __new__ базового класса (object)
        instance = super().__new__(cls)
        return instance  # Возвращаем созданный объект

    def __init__(self, value):
        print("Вызван __init__: Инициализируем объект")
        self.value = value  # Наполняем объект данными

# Создаём экземпляр
obj = Example(10)
# Вывод:
# Вызван __new__: Создаём объект
# Вызван __init__: Инициализируем объект

print(obj.value)  # 10
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы