Effective Python › Item 51: Prefer Class Decorators Over Metaclasses for Composable Class Extensions
Although metaclasses allow you to customize class creation in multiple ways (see Item 48: “Validate Subclasses with __init_subclass__” and Item 49: “Register Class Existence with __init_subclass__”),...
effectivepython.com