Phase 5 of 25 · Topic 5.4

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.