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
  • 相关阅读:
    P2602 [ZJOI2010]数字计数
    P2657 [SCOI2009] windy 数
    Gym
    B
    Problem E The League of Sequence Designers
    C. Vladik and fractions
    hdu6069
    hdu 6096
    30道经典面试题,靠它我在一线拿到了20k的前端开发工程师岗位
    【面经分享】互联网寒冬,7面阿里,终获Offer!
  • 原文地址:https://www.cnblogs.com/Apy-0816/p/11100249.html
Copyright © 2011-2022 走看看