zoukankan      html  css  js  c++  java
  • LocalProxy

    先看看这个关于class 下划线方法的使用。

    例1:

    # -*- coding: utf-8 -*-
    # @Time    : 2019/6/24 下午 9:20
    # @Author  : lh
    # @Email   : 22@qq.com
    # @File    : test.py
    # @Software: PyCharm
    
    class Test(object):
    
        def __str__(self):
            return '__st__ return'
    
        def __getattr__(self, item):
            return '__getattr__ return '
    
        def __getitem__(self, item):
            return '__getitem__ return'
    
        def __add__(self, other):
            return other + 1
    
    
    obj = Test()
    print('这是执行__str__方法:', obj)
    print('这是执行__getattr__方法:', obj.xx)
    print('这是执行__getitem__方法:', obj['xxx'])
    print('这是执行__add__方法:', obj + 2)
    
    

    查看输出:
    在这里插入图片描述
    这里面都重写了下划线方法。

    然后再看看改进版的。

    例2:

    test2.py代码:

    # -*- coding: utf-8 -*-
    # @Time    : 2019/6/24 下午 9:20
    # @Author  : lh
    # @Email   : 22@qq.com
    # @File    : test.py
    # @Software: PyCharm
    
    DATA = {
        'request': {
            'methods': 'GET',
            'form': {
                'user': 'Bob',
            },
        },
        'session': {
            'user_info': [{'name': 'Bob', 'age': 18}]
        }
    }
    
    class LocalProxy(object):
    
        def __init__(self, key):
            self.key = key
    
    
        def get_dict(self):
            return DATA[self.key]
    
        def __str__(self):
    
            return 'str'
    
        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')
    
    

    test3.py代码:

    # -*- coding: utf-8 -*-
    # @Time    : 2019/6/24 下午 9:36
    # @Author  : lh
    # @Email   : 22@qq.com
    # @File    : test3.py
    # @Software: PyCharm
    
    from localproxy.test2 import request, session
    
    
    print(request.methods)
    print(request.form)
    print(session.user_info)
    

    我们来看看request.methods request.form session.user_info分别的输出。
    在这里插入图片描述
    你有没发现这种调用方式跟flask里面的request和session之类这些使用方式简直不要太像了吧。其实flask里面的调用也是类似于这种方式。

    从csdn搬家过来的可能没有图片,原地址https://blog.csdn.net/weixin_38091140
  • 相关阅读:
    Java重命名文件
    三星Samsung 4.4.2该负责人制度,简化名单
    hdu 1203 I NEED A OFFER!
    springMVC整合JAXB
    主流芯片解决方案Ambarella的高清网络摄像机、德州仪器和控制海思
    Objective-C路成魔【18-复制对象】
    QStyleFactory类参考
    QT QSqlQuery QSqlQueryModel
    linux mysql 卸载后重装
    更改Mysql数据库存储位置的具体步骤
  • 原文地址:https://www.cnblogs.com/Apy-0816/p/11100249.html
Copyright © 2011-2022 走看看