實現cache快取(Python)
阿新 • • 發佈:2019-01-01
class Memoize(object): def __init__(self, func): self.func = func # self.cache = {(ADMIN_USER, ADMIN_PASSWORD): ADMIN_USER, } self.cache = {} def __call__(self, *args): print 'args: ', args print 'cache: ', self.cache try: return self.cache[args] except KeyError: value = self.func(*args) self.cache[args] = value return value except TypeError: return self.func(*args) def __repr__(self): return self.func.__doc__ or '' def __get__(self, obj, objtype): """ Support instance methods. Important :param obj: :param objtype: :return: """ print "obj : ", obj print "objtype : ", objtype return functools.partial(self.__call__, obj) def __str__(self): return str(self.func)