class DebugBase:
def __init_subclass__(cls, **kwargs):
print(f"Creating subclass {cls.__name__}")
super().__init_subclass__(**kwargs)
class Subclass(DebugBase):
pass
# Output: Creating subclass Subclass
- Use metaclasses sparingly; they add complexity.
- Prefer composition and decorators for simpler use cases.
- Document your metaclasses thoroughly for maintainability.