96. Class Decorators
1. Basic Class Decorator
def add_method(cls):
cls.new_method = lambda self: "New Method Added"
return cls
@add_method
class MyClass:
def existing_method(self):
return "Existing Method"
obj = MyClass()
print(obj.existing_method()) # Output: Existing Method
print(obj.new_method()) # Output: New Method Added2. Logging Class Instantiation
def log_instantiation(cls):
original_init = cls.__init__
def new_init(self, *args, **kwargs):
print(f"Creating an instance of {cls.__name__}")
original_init(self, *args, **kwargs)
cls.__init__ = new_init
return cls
@log_instantiation
class MyClass:
def __init__(self, name):
self.name = name
obj = MyClass("Test") # Output: Creating an instance of MyClass3. Singleton Pattern with Class Decorator
4. Adding Class Attributes
5. Validating Attribute Values
6. Counting Instances of a Class
7. Enforcing Method Call Logging
8. Extending Class with a Mixin
9. Restricting Attribute Creation
10. Timing Class Method Execution
Last updated