git.fiddlerwoaroof.com
Raw Blame History
class LazyLoad(object):
    def __init__(self, __func_, *args, **kwargs):
        self.__func = __func_
        self.__args = list(args)
        self.__kwargs = kwargs
    def __get__(self, inst, cls):
        tb = cls.__dict__
        nm = [x for x in tb.keys() if id(tb[x]) == id(self)][0]
        setattr(inst, nm, self.__func(*self.__args, **self.__kwargs))
        return getattr(inst, nm)

def func(a,b,c):
    print a,b,c
    return a+b,c

class a(object):
    b = LazyLoad(func, 1,2,3)
    c = LazyLoad(func, 2,3,4)
    d = LazyLoad(func, 3,4,5)
    __e = LazyLoad(func, 4,5,6)
    def __str__(self): return str(self.__e)