Назад к вопросам
Middle
182
questionbank

Что делает метод new в контексте языка Python?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

__new__ - это метод класса, отвечающий за создание нового экземпляра класса. Он вызывается до __init__ и определяет, какой объект будет возвращен. Чаще всего используется для создания уникальных объектов (Singleton) или объектов неизменяемого типа (вроде tuple или str).

class Singleton:
    _instance = None

    def __new__(cls):
        // Проверяем, существует ли уже экземпляр
        if cls._instance is None:
            // Если нет, создаем его, делегируя создание родительскому классу (object)
            cls._instance = super().__new__(cls)
        // Возвращаем существующий или только что созданный экземпляр
        return cls._instance

# Примеры использования
s1 = Singleton()
s2 = Singleton()

# Ожидаемый результат: True
print(s1 is s2)

Сравнение __new__ и __init__:

  • __new__:

    • Метод статический (cls - первый аргумент).
    • Вызывается ДО создания экземпляра.
    • Возвращает созданный экземпляр объекта.
  • __init__:

    • Метод экземпляра (self - первый аргумент).
    • Вызывается ПОСЛЕ создания экземпляра.
    • Не возвращает значений (неявно возвращает None).
    • Используется для инициализации атрибутов созданного объекта.