Встречается на собеседованиях • сегодня

Как устроен Singleton

Singleton — это паттерн проектирования, который гарантирует, что у класса есть только один экземпляр, и предоставляет глобальную точку доступа к нему.

Реализация через __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

Особенности:

  • Потокобезопасность требует дополнительных мер (например, threading.Lock).
  • Может нарушать принцип единственной ответственности.
  • Используется для логгеров, конфигураций, подключений к БД.

Альтернативы — модули (уже синглтоны в Python) или dependency injection.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы