分类目录:《系统学习Python》总目录
装饰是为函数和类指定管理或扩增代码的一种方式。装饰器本身采取可调用对象的形式(如函数),并处理其他可调用对象。Python装饰器以两种相关的形式呈现,二者都不要求使用Python3.X或新式类:
简而言之,装饰器提供了一种方法,在函数和类定义语句结束时插人自动运行的代码一一对于函数装饰器,在def
语句结束时插人;对于类装饰器,在class
语句结束时插人。这样的代码可以扮演不同的角色,请参见后文的介绍。
在通常的用法中,这种自动运行的代码可能用来扩展对函数和类的调用。它通过安装随后被调用的包装器(即代理)对象来实现这一点:
装饰器通过在def
和class
语句的末尾自动把函数名和类名重绑定到其他可调用对象上来实现这些效果。当之后调用的时候,这些可调用对象可以完成诸如跟踪和计时函数调用、管理类实例属性访问等任务。
尽管《系统学习Python——装饰器》系列文章中的大多数示例都使用包装器来拦截之后对函数和类的调用,但这并非使用装饰器的唯一方法:
换句话说,函数装饰器可以用来管理函数调用和函数对象,类装饰器可以用来管理类实例和类自身。通过返回装饰的对象自身而不是包装器,装饰器变成针对函数和类的一种简单的创建后步骤。不管扮演什么样的角色,装饰器都提供了一种方便而明确的方法,帮助你编写在程序开发和现实产品系统阶段都有用的工具。
参考文献:
[1] Mark Lutz. Python学习手册[M]. 机械工业出版社, 2018.