Декоратор, очень быстрое кэширующее property

class cache_property(object):
    '''
    Декоратор, очень быстрое кэширующее property
    '''
    def __init__(self, f):
        self.f = f

    def __get__(self, instance, owner):
        value = self.f(instance)
        setattr(instance, self.f.__name__, value)
        return value