Что такое __init_subclass__?

Senior
157 просмотров
AFK Offer AI

__init_subclass__ — хук, вызывается при создании подкласса. class Base: def __init_subclass__(cls, kwargs): super().__init_subclass__(kwargs); cls.registry = True. class Child(Base): pass — Child.registry == True. Альтернатива метаклассам для простых случаев. Параметры: class Child(Base, param="value") — param передаётся в __init_subclass__. Применения: автоматическая регистрация подклассов, валидация, добавление атрибутов. Plugin system: class Plugin: plugins = []; def __init_subclass__(cls): Plugin.plugins.append(cls). Проще и читаемее метакласса. Появился в Python 3.6 (PEP 487).

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

Как использовать модуль dis?