使用类装饰器还可以依靠类内部的__call__方法,但使用@形式将装饰器附加到函数上时,就会调用此方法。
如下代码:
- class Foo(object):
- def __init__(self, func):
- self._func = func
-
- def __call__(self, *args, **kwargs):
- print("class decorator running")
- self._func()
- print("class decorator ending")
-
- def bar():
- print("i am bar")
-
- @Foo
- def bar():
- print("I am bar")
-
- @Foo
- def HelloWorld():
- print("Hello World")
-
- if __name__ == "__main__":
- bar()
- HelloWorld()
运行截图如下:

类装饰器在使用时,没有函数装饰器用得多。





![战神引擎传奇手游【1.76盛战传奇免授权版[摸摸登陆器]】最新整理Win系复古服务端+安卓苹果双端+GM授权物品后台+详细搭建教程](https://cdn.jxasp.com:9143/image/20251106/1B4E8594B3BEB90E8601D63A8A39CB0B.jpg)













