Sobes.tech
Back to questions
Junior — Middle
74

Можешь привести пример, когда использование метакласса в Python оправдано?

Answer from AI

sobes.tech AI

Метаклассы в Python оправданы, когда нужно контролировать или изменять поведение классов на этапе их создания. Например, если требуется автоматически регистрировать все подклассы в реестр или проверять наличие определённых атрибутов при определении класса.

Пример: автоматическая регистрация всех подклассов базового класса в словаре.

class RegistryMeta(type):
    registry = {}

    def __new__(cls, name, bases, attrs):
        new_class = super().__new__(cls, name, bases, attrs)
        if name != 'Base':
            cls.registry[name] = new_class
        return new_class

class Base(metaclass=RegistryMeta):
    pass

class A(Base):
    pass

class B(Base):
    pass

print(RegistryMeta.registry)  # {'A': <class '__main__.A'>, 'B': <class '__main__.B'>}

Такой подход удобен для плагинов, фабрик и систем, где нужно динамически работать с классами.