Встречается на собеседованиях • сегодня
Какие есть способы реализации паттерна Singleton
В Python есть несколько способов реализации Singleton:
- Через модуль (самый простой способ):
python
# singleton.py
class _Singleton:
pass
instance = _Singleton()При импорте instance всегда будет один и тот же объект.
- Через переопределение new:
python
class Singleton:
_instance = None
def __new__(cls):
if cls._instance is None:
cls._instance = super().__new__(cls)
return cls._instance- Декоратор:
python
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- Метакласс:
python
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 Singleton(metaclass=SingletonMeta):
passВыбор способа зависит от требований к инициализации и необходимости наследования.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы