• 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
  • 相关阅读:
    2021.11.22 图书管理系统
    2021.12.2 综合案例建模分析
    78 内核级命令实现示例
    74 键盘驱动程序的完善
    81 文件系统设计与实现(一)
    浮点数在内存中的表示
    75 Shell 任务的实现(上)
    79 硬盘驱动程序设计(上)
    浮点数在内存中的表示
    77 Shell 任务的实现(下)
  • 原文地址:https://www.cnblogs.com/Apy-0816/p/11100249.html
Copyright © 2020-2023  润新知