<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def cached_object(self, path, compute_fn):
 """ If `cached_object` has already been called for a value of `path` in this running Python instance, then it should have a cached value in the _memory_cache; return that value. If this function was never called before with a particular value of `path`, then call compute_fn, and pickle it to `path`. If `path` already exists, unpickle it and store that value in _memory_cache. """

        if path in self._memory_cache:
            return self._memory_cache[path]

        if exists(path) and not self.is_empty(path):
            obj = load_pickle(path)
        else:
            obj = compute_fn()
            dump_pickle(obj, path)
        self._memory_cache[path] = obj
        return obj