9.12 使用装饰器扩充类的功能

    这种情况可能是类装饰器最好的使用场景了。例如,下面是一个重写了特殊方法 的类装饰器,可以打印日志:

    下面是使用效果:

    这种方案也行得通,但是为了去理解它,你就必须知道方法调用顺序、 以及其它8.7小节介绍的继承知识。某种程度上来讲,类装饰器方案就显得更加直观,并且它不会引入新的继承体系。它的运行速度也更快一些,因为他并不依赖 函数。

    如果你系想在一个类上面使用多个类装饰器,那么就需要注意下顺序问题。例如,一个装饰器A会将其装饰的方法完整替换成另一种实现,而另一个装饰器B只是简单的在其装饰的方法中添加点额外逻辑。那么这时候装饰器A就需要放在装饰器B的前面。

    原文: