Назад к вопросам
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).
- Используется для инициализации атрибутов созданного объекта.
- Метод экземпляра (