python装饰器之类装饰器
类装饰器
需求
需求: 需要给一个多方法的py文件加上如果其中一个函数出现异常,其余继续执行,然后也统计每个函数的运行时间
定义一个类装饰器 test.py
import time
from functools import wraps
class MyDec:
"""我的类装饰器"""
def __test(sel, func, *args, **kwargs):
"""
处理函数异常,这是一个前置函数
"""
try:
res = func(*args, **kwargs)
except:
res = None
print(func.__name__, "执行失败")
return res
def __call__(self, func):
"""
重构call函数,实现类装饰器
func:使用了装饰器的函数本身
"""
@wraps(func)
def wrapper(*args, **kwargs):
t1 = time.time()
# res = func(*args, **kwargs)
# 在这里使用前置函数
res = self.__test(func, *args, **kwargs)
t2 = time.time()
print("运行时间:", t2 - t1)
return res
return wrapper
调用装饰器 test2.py
from test import MyDec
# 类装饰器应用时一定要加上()
@MyDec()
def classssss(x, y):
print("我要使用类装饰器")
x/y
if __name__ == '__main__':
classssss(1, 1)
print("发生异常后是否还执行")