code: def _get_option(target_obj, key):
      
      getter_name = 'get_{key}'.format(**locals())
      by_attribute = functools.partial(getattr, target_obj, key)
      getter = getattr(target_obj, getter_name, by_attribute)
      return getter()
docs: Given a target object and option key, get that option from
      the target object, either through a get_{key} method or
      from an attribute directly.