human
I wrote the below code

    @wraps(fun)
    def get(self):
        try:
            return self._cache[fun]
        except AttributeError:
            self._cache = {}
        except KeyError:
            pass
        ret = self._cache[fun] = fun(self)
        return ret
    return property(get)

What's a good function header?

=====
Here's a good function header?
assistant
#Here's a good function header.

def cached_property(fun):