使用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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值