函数修饰器通常是用来给现存的函数增加每次函数被调用时都会运行的一层逻辑。它们可以用来记录函数的日志或者调用次数,检查参数的类型等。它们同样可以用作“静态方法”(一个在类中的函数,不需要传入实例)。
静态方法只是嵌套在类对象中的简单函数。为了使一个方法成为静态方法,它必须可以通过特殊的内置函数运行,或者使用装饰器进行修饰。
- class tracer:
- def __init__(self,func):
- self.calls = 0
- self.func = func
- def __call__(self,*args):
- self.calls +=1
- print "calls %s to %s " %(self.calls,self.func.__name__)
- self.func(*args)
- @tracer
- def spam(a,b,c):
- print a,b,c