理解Python装饰器

python装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志、性能测试、事务处理等。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数中与函数功能本身无关的雷同代码并继续重用。概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。

一、通过案例来理解装饰器

1.1最简单的函数,准备附加额外功能

1.2使用装饰函数在函数执行前和执行后分别附加额外功能

1.3使用语法糖@来装饰函数

1.4使用内嵌包装函数来确保每次新函数都被调用

1.5对带参数的函数进行装饰

1.6对参数数量不确定的函数进行装饰

1.7让装饰器带参数

1.8让装饰器带 类 参数

1.9装饰器带类参数,并分拆公共类到其他py文件中,同时演示了对一个函数应用多个装饰器

二、内置装饰器

内置的装饰器有三个,分别是staticmethod、classmethod和property,作用分别是把类中定义的实例方法变成静态方法、类方法和类属性。由于模块里可以定义函数,所以静态方法和类方法的用处并不是太多,除非你想要完全的面向对象编程。而属性也不是不可或缺的,Java没有属性也一样活得很滋润。

三、几个好玩的例子

1.1 加标签

2.计时器

函数参数未知

3.打印日志

更高级一点得写法

3.显示程序运行状态

参考资料:
http://pythonmap.iteye.com/blog/1682696
http://www.cnblogs.com/rhcad/archive/2011/12/21/2295507.html#3336231
http://www.cnblogs.com/rollenholt/archive/2012/05/02/2479833.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注