之前一直知道装饰器可以增强一个已经存在的方法,Python也提供了annotation的方法,很好用. 但是再看flask login的扩展包的时候. 发现装饰器还可以实现回调函数的注册功能.
flask login就是通过下面的装饰器,来注册回调函数,当没有sessionID时,通过装饰器指定的函数来读取用户到session中.
@login_manager.user_loader
下面写了一个简单的测试例子来演示这个功能.
import time import functools class Test(): #/**feature将调用callback(), 但是在Test中并没有真正的定义callback**/ def feature(self): self.callback() def decorate(self, func): self.callback=func return func test = Test() #/**将foo注册为回调函数*// @test.decorate def foo(): print 'in foo()' #/**调用feature将触发回调函数**/ test.feature()