Flask-上下文管理

1. 

案例1  

class Foo(object):

    def __str__(self):
        return "asdf"

    def __getattr__(self, item):
        return "99"

    def __getitem__(self, item):
        return "87"
    def __add__(self, other):
        return other +1

obj =Foo() print(obj) #asdf print(obj.x) # 99 print(obj.y) # 99 print(obj["x"]) #87 print(obj["y"]) #87 print(obj +8) #9

案例二

py1(s11)

DATA ={
    "request":{
        "x1":"xxx1",
        "x2":"xxx2"
    }
}

class LocalProxy(object):

    def get_dict(self):
        return DATA['request']

    def __str__(self):
        return "asdf"

    def __getattr__(self, item):

        data_dict=self.get_dict()
        return data_dict[item]

    def __getitem__(self, item):

        data_dict =self.get_dict()
        return data_dict[item]

    def __add__(self, other):
        return other +1


request =LocalProxy()  #实例化request对象
session
=LocalProxy()

py2

from s11 import request
print(request)
print(request.x1)
print(request.x2)

执行py2 打印结果为

asdf
xxx1
xxx2

案例三(案例二的改进版)

DATA ={
    "request":{
        "method":"GET",
        "form":{}
    },
    "session":{
        "user":"alex",
        "age":"19",
    }
}

class LocalProxy(object):

    def __init__(self,key):   #此对象增加初始化方法,定义属性 ,将此属性传到实例化方法中.
        self.key =key

    def get_dict(self):
        return DATA[self.key]

    def __str__(self):
        return "asdf"

    def __getattr__(self, item):

        data_dict=self.get_dict()
        return data_dict[item]

    def __getitem__(self, item):

        data_dict =self.get_dict()
        return data_dict[item]

    def __add__(self, other):
        return other +1


request =LocalProxy("request")
session =LocalProxy("session")

执行如下文件.

from s11 import request,session

print(request.method)  #GET
print(request.form)    #{}

print(session.user)    #alex
print(session.age)     #19

猜你喜欢

转载自www.cnblogs.com/mengbin0546/p/10310530.html
今日推荐