如何在Python使用装饰器来注册回调函数

之前一直知道装饰器可以增强一个已经存在的方法,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()

猜你喜欢

转载自flyfoxs.iteye.com/blog/2393496