Back to questions
Junior — Middle
60
В каких случаях и в каких ситуациях применяется метод __new__ в Python?
Answer from AI
sobes.tech AI
Метод __new__ в Python отвечает за создание нового экземпляра класса. Он вызывается до __init__ и возвращает сам объект. Обычно его используют в следующих случаях:
- Когда нужно контролировать процесс создания объекта, например, реализовать паттерн Singleton.
- Для создания экземпляров неизменяемых типов (например, кортежей или строк), где инициализация через
__init__невозможна. - При наследовании от встроенных типов, чтобы корректно создать объект.
Пример использования __new__ для Singleton:
class Singleton:
_instance = None
def __new__(cls, *args, **kwargs):
if not cls._instance:
cls._instance = super().__new__(cls)
return cls._instance
def __init__(self, value):
self.value = value
s1 = Singleton(1)
s2 = Singleton(2)
print(s1 is s2) # True
print(s1.value) # 2
Здесь __new__ гарантирует, что создаётся только один экземпляр класса.