Werkzeug的Local系列(6) -LocalProxy源码与使用

LocalProxy源码

LocalProxy的源码太长,就不放这儿,实现原理与之前文章模仿LocalProxy的文章基本是一样,只是LocalProxy更加完善。

LocalProxy使用

# 使用werkzeug的Local

from werkzeug.local import Local,LocalStack, LocalProxy

class Request(object):

    def __init__(self):
        self.url = 'baidu.com'

class User(object):

    def __init__(self):
        self.owner = 'www'
    
r = Request()
u = User()

# 使用Local
l = Local()
l.request =  r
l.user = u
# request是LocalProxy对象
request = l('request')
print(request.url)

# 使用LocalStack
ls = LocalStack()
ls.push(r)
# request是LocalProxy对象
request = ls()
print(request.url)

# 显示使用LocalProxy
request = LocalProxy(l, 'request')
print(request.url)
user = LocalProxy(l, 'user')
print(user.owner)

以上代码基本对Local使用进行了介绍,对于整个Local系列来说也就结束了,唯一没有介绍就是Local与线程和协程的配合使用,后续需要用到的时候再介绍。

你可能感兴趣的:(Werkzeug的Local系列(6) -LocalProxy源码与使用)