Class Decorators & Decorating Classes
1Concept
A class can act as a decorator by implementing `__call__()`. Conversely, functions can decorate classes to inspect, modify, or register them in central factories upon class creation.
2Architecture Diagram
Class as Decorator: implements __call__() to intercept function execution Decorating a Class: function takes class object, injects methods, and returns it
3Code Example
Python 3.12
def add_audit_id(cls):
cls.audit_enabled = True
return cls
@add_audit_id
class FinancialReport:
pass
print(f"FinancialReport audit_enabled: {FinancialReport.audit_enabled}")4Expected Output
FinancialReport audit_enabled: True
5Key Takeaways
- ✓Class decorators are an alternative to metaclasses for simple class modifications.
- ✓Implementing `__call__` on a class instance allows using that instance as a function decorator.
- ✓Widely used in FastAPI for router registration and Django for signal handlers.