def inner_fn(fn):

    @wraps(fn)
    def wrapper(self, *args, **kwargs):
        instance = getattr(self, cache_key)
        if (instance is not None):
            return instance
        instance = fn(self, *args, **kwargs)
        setattr(self, cache_key, instance)
        return instance
    return wrapper
def inner_fn(fn):

    @wraps(fn)
    def wrapper(self, *args, **kwargs):
        instance = getattr(self, cache_key)
        if (instance is not None):
            return instance
        instance = fn(self, *args, **kwargs)
        setattr(self, cache_key, instance)
        return instance
    return wrapper