Исходный код EJIO.utils.interface.singleton

## /utils/interface/singleton.py

from threading import Lock
from typing import TypeVar

__all__ = [
    'Singleton'
]

T = TypeVar('T', bound='SingletonMeta')


class SingletonMeta(type):
    """
    Мета-класс Singleton. Обеспечивает единичность экземпляра для каждого класса-наследника.
    """
    __slots__ = ()

    _instances: dict[T, T] = {} # type ignore[valid-type]
    _lock: Lock = Lock()

    def __call__(cls, *args: object, **kwargs: object) -> T: # type ignore
        """
        Гарантирует, что при вызове класса, если экземпляр класса уже создавался,
        то вернет именно его.

        :param args: Аргументы вызова.
        :param kwargs: Ключевые аргументы вызова.
        :return: Экземпляр класса.
        """
        with cls._lock:
            if cls not in cls._instances:
                cls._instances[cls] = super().__call__(*args, **kwargs)
        return cls._instances[cls]


[документация] class Singleton(metaclass=SingletonMeta): """ Базовый класс Singleton. """ ...