Decorator for getters that require a load() upon first access.

  :type func_name: function
  :param func_name: class method that requires that load() be called if the class's _attribute value is None

  :rtype: function
  :return: the decorated class method.

def loadable(func_name):
  """Decorator for getters that require a load() upon first access.

  :type func_name: function
  :param func_name: class method that requires that load() be called if the class's _attribute value is None

  :rtype: function
  :return: the decorated class method.

  """
  def inner(func):
    cached_name = '_' + func.__name__
    @functools.wraps(func)
    def _decorator(self, *args, **kwargs):
      if getattr(self, cached_name) is None:
        getattr(self, func_name)()
      return func(self, *args, **kwargs)
    return _decorator
  return inner