werkzeug中 LocalProxy作用的一点感悟

这里的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对象中寻找,如果直接返回对象,则失去了其本身的意义。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值