减小计算开销将数据保存在类的属性中的思想

from collections import defaultdict


class Test(object):
    def __init__(self):
        # 保存数据的类的属性
        self.dic = defaultdict(int)

    def init_data(self):
        self.dic[2] = 666
        self.dic[4] = 666

    def get_data(self):
        # 获取数据的逻辑略
        return 123

    def handle_method(self):

        # 如果数据在self.dic中就从self.dic中获取否则计算得到
        for i in range(5):
            if i in self.dic:
                print("从self.dic中获取到的值,不用计算:",self.dic[i])
            else:
                data = self.get_data()
                # 将值存在self.dic中,以便下次使用
                self.dic[i] = data
                print("没有从self.dic中获取值,需要计算:",data)

if __name__ == '__main__':
    
    t = Test()
    t.init_data()
    t.handle_method()
    """
    没有从self.dic中获取值,需要计算: 123
    没有从self.dic中获取值,需要计算: 123
    从self.dic中获取到的值,不用计算: 666
    没有从self.dic中获取值,需要计算: 123
    从self.dic中获取到的值,不用计算: 666
    """

~~

posted on 2020-02-28 16:50  江湖乄夜雨  阅读(124)  评论(0编辑  收藏  举报