python的装饰器应该可以被称为函数的加强,也就是增加一个函数的功能
这里,就以一个非常简单的例子来说明
#装饰器
def bar(func):
print "before return func"
return func
def func():
print "calling func"
f = bar(func)
f()
执行结果:before return func
calling func
这是最原始的写法,其原理也是这样的
而下面这种是一处语法糖写法,和Java中的注解比较相似
@bar
def func():
print "calling func"
func()
执行结果:before return func
calling func
Python中内置的装饰器有三个: staticmethod、classmethod 和property
staticmethod 是类静态方法,其跟成员方法的区别是没有 self 指针,并且可以在类不进行实例化的情况下调用,下面是一个实例,对比静态方法和成员方法
classmethod 与成员方法的区别在于所接收的第一个参数不是 self 类实例的指针,而是当前类的具体类型
property 是属性的意思,即可以通过通过类实例直接访问的信息