搜狐

邮箱部门有在用,是 webpy、Django 用户 ...

↑我也要推荐

在 web.py 中使用装饰器

发布时间:2012-07-01 10:18:11, 关注:+6154, 赞美:+0, 不爽:+3

本文标签: 装饰器

原始出处: 鸡蛋羹

import web
urls = (
    '/', 'hello',
)
app = web.application(urls, globals())
def hold(func):
    print 'run hlod'
    def f(self):
        print 'in hold func'
        return 'hold'
    return f
class hello:
    @hold
    def GET(self):
        print 'in hello'
        return 'hello'

if __name__ == "__main__":
    app.run()

 

现在的问题是,hold会在什么时候调用?

过去我一直以为是每次调用GET函数的时候会调用一遍hold函数
但事实并不是这样的,
事实是,当定义GET函数加载的时候,就会调用一遍hold函数
而且仅仅调用一遍hold,
这时候hold返回的函数就会替代原始的GET函数定义,
所以运行这点python代码,输出结果如下

http://0.0.0.0:8080/
run hlod
in hold func
10.0.2.2:51602 - - [23/Sep/2011 08:04:11] "HTTP/1.1 GET /" - 200 OK
10.0.2.2:51602 - - [23/Sep/2011 08:04:11] "HTTP/1.1 GET /favicon.ico" - 404 Not Found
in hold func
10.0.2.2:51602 - - [23/Sep/2011 08:04:12] "HTTP/1.1 GET /" - 200 OK

如果你觉得本站对你有帮助,欢迎向本站赞助 :P

使用支付宝捐赠

Copyright© Python4cn(news, jobs) simple-is-better.com, 技术驱动:powered by web.py 空间主机:Webfaction

版权申明:文章转载已注明出处,如有疑问请来信咨询。本站为 python 语言推广公益网站,与 python 官方没有任何关系。

联系/投搞/留言: en.simple.is.better@gmail.com 向本站捐赠