我的标题
第一章 引言
第1节 装饰器定义
在面向对象(OOP)的设计模式中,Decorator被称为装饰模式,OOP的装饰器模式需要通过继承和组合来实现。
本质上,装饰器是一个类或带有返回函数的高阶函数。
第2节 装饰器的使用背景
一般的,我们为了扩展一个类经常使用继承方式来实现,由于继承给类引入了新的静态特征,并且随着扩展功能的增多,子类会很膨胀。
所以,在不想增加很多子类的情况下扩展类,那么就可以选择装饰器来灵活地扩展类了。
第3节 装饰器的使用场景
(一)扩展一个类或函数的功能;
(二)动态增加功能,动态撤销;
第4节 装饰器的优缺点
优点:
(一)装饰器和被装饰对象可以独立发展,不会互相耦合;
(二)装饰模式是继承的一个替代模式,装饰器可以动态扩展一个实现类的功能
缺点:
(一)多层装饰器比较复杂
第二章 python中的装饰器
第1节 实现对象
python 除了能支持OOP的Decorator外,还能从语法层次上支持Decorator。
python 的Decorator可以用函数实现,也可以用类实现。
第2节 函数装饰器demo
需求:在对象功能执行前,打印对象的名称和传入的参数。
思路:1、定义一个2层嵌套的装饰器函数,主函数接收被装饰对象而内部函数接收被装饰对象的参数,在内部函数先完成打印需求,然后执行被装饰对象并赋值给一个变量,最后在内部函数return该变量,而外部函数则return内部函数对象。
2、定义功能函数,实现具体的功能,并调试通过。
3、使用python的@语法,在功能函数前面添加“@decoratorName”,再次运行功能函数,检查是否实现需求。
示例代码:
def decorator1(func):
"""a simple decorator"""
def _wrapper(*args, **kargs):
print('Func Name: %s'%func.__name__)
print('Func args: %s'%args)
print('Func kargs: %s'%kargs)
# Execute func which