Middle
Какво прави методът new в контекста на езика Python?
sobes.tech AI
Отговор от 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).
- Используется для инициализации атрибутов созданного объекта.
- Метод экземпляра (первый аргумент