`
flyfoxs
  • 浏览: 294825 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

如何在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()

 

 

分享到:
评论

相关推荐

    Python装饰器限制函数运行时间超时则退出执行

    python装饰器简单来说可以在不改变某个函数内部实现和原来调用方式的前提下对该函数增加一些附件的功能,提供了对该函数功能的扩展。 方法一. 使用 signal # coding=utf-8 import signal import time def set_time...

    Python装饰器使用示例及实际应用例子

    主要介绍了Python装饰器使用示例及实际应用例子,本文给出了斐波拉契数列、注册回调函数、mysql封装、线程异步等实际使用示例,需要的朋友可以参考下

    python cookbook(第3版)

    7.10 带额外状态信息的回调函数 7.11 内联回调函数 7.12 访问闭包中定义的变量 第八章:类与对象 8.1 改变对象的字符串显示 8.2 自定义字符串的格式化 8.3 让对象支持上下文管理协议 8.4 创建大量对象时...

    Python Cookbook

    11.2 避免在编写回调函数时使用lambda 404 11.3 在tkSimpleDialog函数中使用默认值和区间 405 11.4 给Tkinter列表框增加拖曳排序能力 406 11.5 在Tkinter部件中输入一个重音字符 408 11.6 在Tkinter中嵌入内联的...

    smoothie:基于 Python 异常的回调

    冰沙安装 pip install smoothie 例子基于 Python 异常的回调将您的回调作为装饰器添加到函数中,这些函数将根据引发的异常进行调用。 from smoothie . king import Dispenserdef err_callback ( * args , ** kwargs ...

    python基础知识归纳及实例(全面).zip

    python注释问题、关键字、基本数据类型、数据类型、数学功能、运算符/表达式、if/for/while等语句、(列表、集合、元组、字典)的使用及其各自中的方法、迭代器、各类函数(递归、回调等)、变量作用域、装饰器、栈/...

    python如何实现异步调用函数执行

    异步:是和同步相对的,异步是指在处理调用这个事务的之后,不会等待这个事务的处理结果,直接处理第二个事务去了,通过状态、通知、回调来通知调用者处理结果 分析一下,下面的例子: 定义了一个装饰器 async 和...

    python入门到高级全栈工程师培训 第3期 附课件代码

    03 高阶函数使用 04 函数闭包 05 函数闭包装饰器基本实现 06 函数闭包加上返回值 07 函数闭包加上参数 08 函数闭包补充:解压序列 09 函数闭包为函数加上认证功能 10 函数闭包模拟session 11 函数闭包装饰器运行流程...

    python学习应用手册(上册)

    4、函数、装饰器、偏函数、变量作用域、回调函数、返回函数、闭包、递归、动态规划 5、迭代器与生成器、常用函数总结、高阶函数 6、模块导入、自定义模块、安装第三方模块 7、文件操作、时间日期、日历、随机数、栈...

    class_definition_helpers:帮助程序使用python描述符定义结构化对象,以实现触发器,回调,多次写入,多次写入,计算和缓存以及外部绑定对象的属性

    类装饰器 @baseinit(class_to_decorate=None, *, args=(), kwargs={}, mixargs=False) 更新__init__以自动调用super().__init__ 。开头的__init__也可以不带参数直接使用,在这种情况下将不带参数调用base_class ...

    flask-jwtlogin:flask扩展以处理API中的用户登录

    load_user用于使用回调函数从请求中手动加载用户 current_user代理 如何使用它? flask-jwtlogin可以简单地通过pip安装: pip install flask-jwtlogin 首先,您需要一些配置: { 'JWT_HEADER_NAME' : 'your_...

Global site tag (gtag.js) - Google Analytics