lwzm
8/2/2016 - 6:23 AM

Fresh Function Wrapper

Fresh Function Wrapper

class FreshFunc:
    def __init__(self, fn, n=1):
        self._i = 0
        self._n = n
        self._fn = fn
        self._ret = None
        
    def __call__(self, *args, **kwargs):
        if self._i == 0:
            ret = self._ret = self._fn(*args, **kwargs)
        else:
            ret = self._ret
        self._i += 1
        if self._i >= self._n:
            self._i = 0
        return self._ret
        

    
f = FreshFunc(lambda: (print(1), 2), 10)
f()