SpecialistOff.NET / Вопросы / Статьи / Фрагменты кода / Резюме / Метки / Помощь / Файлы
НазадМетки: python
Now let’s go back and implement the first example. Here, we’ll do the more typical thing and actually use the code in the decorated functions:
# PythonDecorators/entry_exit_class.py class entry_exit(object): def __init__(self, f): self.f = f def __call__(self): print("Entering", self.f.__name__) self.f() print("Exited", self.f.__name__) @entry_exit def func1(): print("inside func1()") @entry_exit def func2(): print("inside func2()") func1() func2()
The output is:
Entering func1 inside func1() Exited func1 Entering func2 inside func2() Exited func2
You can see that the decorated functions now have the “Entering” and “Exited” trace statements around the call.
The constructor stores the argument, which is the function object. In the call, we use the __name__ attribute of the function to display that function’s name, then call the function itself.