Какие знаешь способы создания Singleton

Python Middle СБЕР Центр ИИ
Какие знаешь способы создания Singleton
Ответы
В Python Singleton можно реализовать несколькими способами. Основные подходы: - **Через модуль** (самый простой): Модули в Python и так являются синглтонами по своей природе. ``` # singleton.py class _Singleton: pass instance = _Singleton() ``` - **Через декоратор**: ``` def singleton(cls): instances = {} def wrapper(*args, **kwargs): if cls not in instances: instances[cls] = cls(*args, **kwargs) return instances[cls] return wrapper @singleton class MyClass: pass ``` - **Через метакласс**: ``` class SingletonMeta(type): _instances = {} def __call__(cls, *args, **kwargs): if cls not in cls._instances: cls._instances[cls] = super().__call__(*args, **kwargs) return cls._instances[cls] class MyClass(metaclass=SingletonMeta): pass ``` - **Через **new****: ``` class Singleton: _instance = None def __new__(cls, *args, **kwargs): if not cls._instance: cls._instance = super().__new__(cls) return cls._instance ``` Выбор способа зависит от конкретных требований. Модульный подход - самый простой, метаклассы дают больше контроля, а декораторы более гибкие.