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

## /utils/interface/static_class.py

from typing import NoReturn
from .disposable import DisposableMeta

__all__ = [
    'StaticClass',
    'StaticClassMeta',
]


[документация] class StaticClassMeta(DisposableMeta): """ Метакласс, запрещающий создание экземпляров. """ __slots__ = () def __call__(cls, *args: tuple[object, ...], **kwargs: dict[str, object]) -> NoReturn: """ Запрещает вызов класса для создания экземпляров. :param args: Аргументы вызова. :param kwargs: Ключевые аргументы вызова. :raises: TypeError при попытке вызова класса. """ raise TypeError( f"Class '{cls.__name__}' is static. " f"Instances creation is forbidden." )
[документация] class StaticClass(metaclass=StaticClassMeta): """ Интерфейс-миксин для создания строго статических классов. Запрещает создание любых экземпляров данного класса или его наследников. """ __slots__ = () def __init__(self) -> None: """ Запрещает создание экземпляров класса. :raises: TypeError при попытке вызова конструктора """ raise TypeError( f"Class '{self.__class__.__name__}' is static. " f"Instances creation is forbidden." )