在python中,装饰器处理作用于方法上用于增强方法外,还可以作用与类,用于类的功能增强与修订,实现代理模式、装饰模式等效果,甚至可以达到继承以及mixin的效果。
1. 定义类装饰器
定义类装饰器非常简单,仅接受唯一的参数——待装饰的类,这里以统计类的初始化实例为例,每初始化一个实例,则计数加1,如下:
def instCounter(cls):
oldInit = cls.__init__
# 声明计数变量,相当于final
counter = [0]
def newInit(self, *args, **xargs):
#global counter
counter[0] = counter[0] +