python - 用类写装饰器

这里用到了__call__的class内置参数

#类装饰器:
class zsq():
    #本质是定义一个参数,让装饰的主题传递至__call__方法内部
    def __init__(self,obj):
        self.obj = obj
    #利用__call__将类转变为可执行
    #__call__内相当于函数装饰器最外层
    def __call__(self, *args, **kwargs):
        print("start")
        #返回主机函数
        re = self.obj(*args, **kwargs)
        print("end")
        return re

#装饰
@zsq
def Test():
    print( "这是Test主体函数....")
    return "这是Test主体函数...."

# 赋值,执行
a = Test()
print(a)

 

posted @ 2018-10-18 08:31  Anec  阅读(314)  评论(0编辑  收藏  举报