How to create a decorator#
Generalities#
To create a new decorator, first import the pydecorium.Decorator
class.
from pydecorium import Decorator
Then, create a new class that inherits from the pydecorium.Decorator
class and add the initialization method.
The new class should implement the _wrapper
method, which is called
when the decorated function is called. The _wrapper
method should be defined as follows:
class MyDecorator(Decorator):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
def _wrapped(self, func, *args, **kwargs):
self.pre_execute()
outputs = func(*args, **kwargs)
self.post_execute()
return outputs
The _wrapper
can access the signature name of the given function func
using the method self.get_signature_name(func)
.
Example#
The following example shows how to create a simple decorator that prints the name of the function before its execution.
class PrintFunctionName(Decorator):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
def _wrapper(self, func, *args, **kwargs):
print(f"Function name: {self.get_signature_name(func)}")
outputs = func(*args, **kwargs)
return outputs
To use the PrintFunctionName
decorator, simply decorate a function with it.
More information on how to use a decorator can be found in the documentation How to use a decorator.