def _get_val_str(obj, path_list=None, reverse=False):
    """Extract values from nested objects by attribute names and concatenate their
    string representations.

    Args:
      obj: object
        Any type of object

      path_list: list
        Attribute names

      reverse: bool
        Reverse the list of values before concatenation.

    Returns:
      str: Concatenated extracted values.

    """
    val_list = _get_val_list(obj, path_list or [], reverse)
    return "<not found>" if obj is None else " / ".join(map(str, val_list))