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'>}
Такой подход удобен для плагинов, фабрик и систем, где нужно динамически работать с классами.