Sobes.tech
Junior — Middle
96

Qual é a diferença entre os métodos __new__ e __init____ no processo de criação e inicialização de objetos em Python?

Empresas quando solicitadas
СБЕР Бизнес
АэрофлотАэрофлот
РунитиРунити
Леста
СБЕР РоботыСБЕР Роботы

Resposta da IA

sobes.tech IA

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