美文网首页
LocalProxy 作用的一点记录

LocalProxy 作用的一点记录

作者: 辰辰沉沉沉 | 来源:发表于2017-10-18 14:44 被阅读0次

    这里的LocalProxy是指 werkzeug.local中的一个类

    class werkzeug.local.LocalProxy(*local*, *name=None*)[]
    Acts as a proxy for a werkzeug local. Forwards all operations to a proxied object. The only operations not supported for forwarding are right handed operands and any kind of assignment.
    

    用法如下

    from werkzeug.local import Local
            l = Local()
    
            # these are proxies
            request = l('request')
            user = l('user')
    

    然后就可以像操作一般的对象一般操作代理了。一般的代理模式会做一些小改动,而此处不同,几乎所有的操作会直接作用在代理的对象上。

    看到这的时候有个疑问,既然和一般对象一样了,为什么还需要这个类呢?为啥l('user')不直接返回user而是返回一个代理呢?

    思考许久,才发现自己想到了误区里边。这个包本身就是给协程中使用的,本身的local对象也是每个协程拥有各自的local。返回localproxy,每次调用都会是在该协程的local对象中寻找,如果直接返回对象,则失去了其本身的意义。

    相关文章

      网友评论

          本文标题:LocalProxy 作用的一点记录

          本文链接:https://www.haomeiwen.com/subject/cwzgextx.html