跟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()

 

posted on 2020-02-17 22:36  显示账号  阅读(226)  评论(0编辑  收藏  举报