Home > Article > Backend Development > Python programming: How to implement class decorators and applications? Key points to grasp
Decorators in Python can be either functions or classes. In the previous sections, we used function decorators. Now, we will learn how to define class decorators.
We will define a custom class that acts as a decorator. When a function is decorated/modified with a class, the function becomes an instance of that class. Let’s find out:
As shown above, we have created a simple class decorator. For any class to become a decorator, it needs to implement the __call__() method. The __call__() method works the same as a wrapper function in a function decorator.
Now let us use this class to decorate a function:
The output of running the program is as follows:
In order for the class decorator to use *args and **kwargs as parameters, we need to use these parameters to implement the __call__() method, and Pass it to the modified function. The general representation method is as follows:
In the above code, the __call__() method of the class decorator accepts *args and **kwargs parameters. In the line of code, the call method passes them to the decorated function: self.func(*args,**kwargs).
Now we use this class decorator to decorate a function:
Class Decoration Decoration Function
The output result of running the program is similar to the following :
Hello Solo Cui
Remember that in the wrapper function of the function decorator, we can use return Keyword returns the decorated function. We'll do the same thing here, but inside the __call__ method.
The class decorator that returns the result
The output result of running the program is as follows:
TRACY CUI
As shown above, we return the modified function in the __call__ method:
return self.func(*args,**args)
So far, about Python This completes the introduction of decorators.
The above is the detailed content of Python programming: How to implement class decorators and applications? Key points to grasp. For more information, please follow other related articles on the PHP Chinese website!