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("发生异常后是否还执行")

posted @ 2022-08-24 11:45  jiyanjiao  阅读(91)  评论(0)    收藏  举报