All pastes #515336 Raw Edit

Cody Brocious

public python v1 · immutable
#515336 ·published 2007-05-28 04:15 UTC
rendered paste body
def Cache(func):    class CacheCls(object):        def __init__(self, func):            if func.func_code.co_argcount > 0:                self.values = {}            else:                self.values = None                self.cached = False                self.value = None            self.func = func                def __call__(self, *args, **kwargs):            if self.values == None:                if not self.cached:                    self.value = self.func()                    self.cached = True                return self.value                        key = `(args, kwargs)`            try:                return self.values[key]            except KeyError:                pass            value = self.values[key] = self.func(*args, **kwargs)            return value    return CacheCls(func)