mini-web框架-装饰器-总结1(5.3.1)

@

1.说明

原则:开放封闭
可以扩展,但是不可以修改。也就是说软件对扩展开放,对修改关闭。
运用技术:闭包
一共两种方法,一个使用闭包,一个使用类
使用多个装饰器是从上到下

2.代码


def test2(func):
    def return_(num,*args,**kwargs):
        print("test2")
        print("附加%d" % num)
        return  func(num,*args,**kwargs)

    return return_

def test1(func):
    def return_(num,*args,**kwargs):
        print("test1")
        print("附加%d" % num)
        return  func(num,*args,**kwargs)

    return return_


class Test3(object):
    def __init__(self,func):
        self.func = func
        pass
    def __call__(self, name,*args, **kwargs):
        print("Test3")
        self.func(name,*args, **kwargs)


@Test3
@test2
@test1
def orin(num,*args,**kwargs):
    print("原来%d" % num)
    for i in args:
        print(i)
    for i in kwargs:
        print(i,kwargs[i])
    return "最后我返回"

a = orin(200,100,500,nums=1000,w=2022)
print(a)

关于作者

个人博客网站
个人GitHub地址
个人公众号:
在这里插入图片描述

posted @ 2019-08-27 01:09  BothSavage  阅读(119)  评论(0编辑  收藏  举报