zoukankan      html  css  js  c++  java
  • 使用FIFO策略缓存对象

    import UserDict
    class FifoCache(object, UserDict.DictMixin):
        def __init__(self, num_entries, dct= ()):
            self.num_entries = num_entries
            self.dct = dict(dct)
            self.lst = [ ]
        def __repr__(self):
            return '%r (%r,%r)' % (self.__class__.__name__, self.name_entries, self.dct)
        def copy(self):
            return self.__class__(self.num_entries, self.dict)
        def keys(self):
            return list(self.lst)
        def __getitem__(self,key):
            return self.dct[key]
        def __setitem__(self, key, value):
            dct = self.dct
            lst = self.lst
            if key in dct:
                lst.remove(key)
            dct[key] = value
            lst.append(key)
            if len(lst) > self.num_entries:
                del dct[lst.pop(0)]
        def __delitem__(self, key):
            self.dct.pop(key)
            self.lst.remove(key)
        def __contains__(self, item):
            return item in self.dict
        has_key = __contains__
    
    
    if __name__ == '__main__':
        f = FifoCache(num_entries = 3)
        f["fly"] = "foo"
        f["moo"] = "two"
        f["bar"] = "ba2"
        f["dave"] = "wilson"
        f["age"] = 20
        print f.keys()
  • 相关阅读:
    枚举和字符串转换
    JavaScript string.format
    Jquery 中toggle的用法举例
    JQuery 实现倒计时
    找位置
    图算法
    文件操作总结
    动态规划——总结
    回文字符串
    a+b_1
  • 原文地址:https://www.cnblogs.com/hzhida/p/2665786.html
Copyright © 2011-2022 走看看