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