关于decorator一些东西

#!/usr/bin/env python
#--*-- coding:utf-8 --*--
__author__ = ‘Kevin‘

def deco(func):
    def in_deco(xx,yy):
        print (‘in deco‘)
        func(xx,yy)
    print (‘call deco‘)
    return in_deco
#当Python解释器看到@deco的时候,会调用deco函数
#传入参数bar,即deco(bar),然后返回一个函数对象in_deco
#bar = in_deco
#bar() in_deco() bar()
#实质也是对闭包的使用
@deco
def bar(x,y):
    print(‘in bar‘,x+y)
print (type(bar))
bar(1,2)
#!/usr/bin/env python
#--*-- coding:utf-8 --*--
__author__ = ‘Kevin‘

def dec(func):
    print ‘call dec!‘
    def in_dec(*arg):
        print (‘in dec arg=‘,arg)
        if len(arg) == 0:
            return 0
        for val in arg:
            if not isinstance(val,int):
                return 0
        return func(*arg)
    print (‘return in_dec‘)
    return in_dec

#当Python解释器看到@dec的时候,就会将
#my_sum作为参数传入dec中
#被装饰的函数my_sum指向新的函数in_dec
#装饰器的实质 就是对我们闭包的使用
@dec
def my_sum(*arg):#my_sum = in_dec
    print(‘in my_sum‘)
    return sum(arg)
#my_sum = dec(my_sum)
print (my_sum(1,2,3,4,5))

def my_average(*arg):
    return sum(arg)/len(arg)
时间: 2024-08-25 09:06:19

关于decorator一些东西的相关文章

24种设计模式--装饰模式【Decorator Pattern】

装饰模式在中国使用的那实在是多,中国的文化是中庸文化,说话或做事情都不能太直接,需要有技巧的,比如说话吧,你要批评一个人,你不能一上来就说你这个做的不对,那个做的不对,你要先肯定他的成绩,表扬一下优点,然后再指出瑕疵,指出错误的地方,最后再来个激励,你修改了这些缺点后有那些好处,比如你能带更多的小兵,当个小头目等等,否则你一上来就是一顿批评,你瞅瞅看,肯定是不服气,顶撞甚至是直接“此处不养爷,自有养爷处”开溜哇.这是说话,那做事情也有很多,在山寨产品流行之前,假货很是比较盛行的,我在 2002

第 13 章 装饰模式【Decorator Pattern】

以下内容出自:<<24种设计模式介绍与6大设计原则>> Ladies and gentlemen,May I get your attention,Please?,Now I’m going to talk about decoratorpattern.装饰模式在中国使用的那实在是多,中国的文化是中庸文化,说话或做事情都不能太直接,需要有技巧的,比如说话吧,你要批评一个人,你不能一上来就说你这个做的不对,那个做的不对,你要先肯定他的成绩,表扬一下优点,然后再指出瑕疵,指出错误的地方

使用 sitemesh/decorator装饰器装饰jsp页面(原理及详细配置)

摘要:首先这个Decorator解释一下这个单词:“装饰器”,我觉得其实可以这样理解,他就像我们用到的Frame,他把每个页面共有的东西提炼了出来,也可能我们也会用各种各样的include标签,将我们的常用页面给包括进来:比如说页面的top,bottom这些每个页面几乎都有,而且都一样,如果我们在每个页面都include,可以发现我们的程序有很多冗余,重复.相比之下装饰器给我们提供了一个较好的选择,他在你要显示的页面根本看不出任何include信息,可以说完全解耦. 一.SiteMesh介绍 S

【装饰者模式】Decorator Pattern

装饰者模式,这个模式说我一直记忆深刻的模式,因为Java的IO,我以前总觉得Java的IO是一个类爆炸,自从明白了装饰者模式,Java的IO体系让我觉得非常的可爱,我们现在看看什么是装饰者,然后再来看如何去很爽的运用Java的IO(C#的IO则不同) Component:这个是抽象接口(这里的接口的意思不是interface关键字对应的接口,而是一个对应的口),以规范准备接收附加责任的对象. Concrete Component:具体的组件,这个可以接收附加责任(装饰)的类 Decorator:

就谈个py 的装饰器 decorator

很早很早就知道有这么个 装饰器的东西,叫的非常神秘. 包括c#  和 java 中都有这个东西, c#中叫做attribut 特性,java中叫做Annotation 注解,在偷偷学习c#教程的时候,我承认我 看了盗版的视频,上边的讲师一带而过,说过这个东西,所以我觉得这个东西很是高达上,这里不说这两个语言,就单说python python中实现这个 很简单,当然如果支持这种语法的话,方式是一样的. 很多程序员就喜欢把简单的东西弄复杂了,例如我,说了 这么一大堆,还没到正题,只是我要讲起来这个东

装饰(Decorator)模式

1.装饰(Decorator)模式    动态给一个对象添加一些额外的职责.就增加功能来说,装饰模式比生成子类更为灵活.Component是定义一个对象接口.可以给这些对象动态地添加职责.ConcreteComponent是定义了一个具体的对象,也可以给这个对象添加一些职责.Decorator,装饰抽象类,继承了Component,从外类来扩展Component类的功能,但对于Component来说,是无需知道Decorator的存在的.至于ConcreteDecorator就是具体的装饰对象,

设计模式之装饰模式--- Pattern Decorator

模式的定义 装饰模式的定义: Attach additional responsibilities to an object dynamically keeping the same interface.Decorators provide a flexible alternative to subclassing for extending functionality. 动态给一个对象添加一些额外的职责.就增加功能来说,装饰模式相比生成子类更为灵活. 类型 结构类 模式的使用场景 需要扩展一个

大话锦集(三)装饰模式(Decorator)

装饰模式(Decorator)就是动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活. 其结构图如下: Component是定义一个对象接口,可以给这些对象动态地添加责任.ConcreteComponent是定义了一个具体的对象,也可以给这个对象添加一些职责.Decorator装饰抽象类,继承了Component,从外类来扩展Component类的功能,但对于Component来说,是无需知道Decorator的存在.ConcreteDecorator就是具体的装饰对

装饰模式Decorator

第三章 装饰模式Decorator  1.1 什么是装饰模式? 装饰模式Decorator,动态的给一些对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活 1.2装饰模式Decorator的结构图 Component是定义一个对象接口,可以给这些对象动态的添加职责. ConcreteComponent是定义了一个具体的对象,也可以给这个对象添加一些职责. Decorator装饰抽象类,继承了Component,从外类来扩展Component类的功能,但对于Component来说,