python中的"环绕通知"

跟java一样, 在不修改源码的情况,对某个方法进行前置 和 后置 功能添强

class Old():
    def do_sth(self):
        print('do something....')

class MiddleWare():
    def __init__(self,old):
        self.old = old

    def __call__(self, *args, **kwargs):
        print('在Old#do_sth方法之前做一些事,前置增强')
        ret =  self.old(*args,**kwargs)
        print('在Old#do_sth方法之后做一些事,前置增强')
        return ret



if __name__ == '__main__':
    old1= Old()
    old1.do_sth()

    print('---------------通过MiddleWare类对do_sth方法进行功能添强-------------------')
    old= Old()
    old.do_sth = MiddleWare(old.do_sth)
    old.do_sth()

猜你喜欢

转载自www.cnblogs.com/z-qinfeng/p/12324120.html