目前在中文网上能搜索到的绝大部分关于装饰器的教程,都在讲如何装饰一个普通的函数,本文介绍如何使用Python的装饰器装饰一个类的方法,同时在装饰器函数中调用类里面的其他方法,并以计算一段代码运行时间为例进行说明。
有一个类MySort,在类中有多种排序方法:
为了知道每种算法的运行效率,可以给每个方法增加一个装饰器,但装饰器函数应该写在类里面还是类外面呢?答案是,写在类外面。装饰器函数:
那么既然写在类外面,如何调用这个类的其他方法呢?这又应该怎么办?答案是给wrapper增加一个参数:self, 完整的代码:
运行结果: