human
I wrote the below code

    attr_name = (u'_lazy_' + fn.__name__)
    @property
    def _lazyprop(self):
        if (not hasattr(self, attr_name)):
            setattr(self, attr_name, fn(self))
        return getattr(self, attr_name)
    return _lazyprop

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

def lazyproperty(fn):