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()
使用FIFO策略缓存对象
最新推荐文章于 2022-09-02 01:14:43 发布