def get(obj, path, default=None):
    """Gets the value at path of object.

    If the resolved value is undefined, the default value is returned
    in its place.

    Exampele:
    >>> obj = { 'a': [{ 'b': { 'c': 3 } }] }
    >>> get(obj, 'a.0.b.c')
    3

    Args:
        obj (dict,list): The object to query.
        path (str): The path of the property to get.
        default (any, optional): The value returned for unresolved values.

    Returns:
        any: Returns the resolved value.
    """
    path_items = path.split(".")
    value = obj
    try:
        for key in path_items:
            if isinstance(value, (list, tuple)):
                value = value[int(key)]
            else:
                value = value[key]
    except (KeyError, ValueError, TypeError):
        value = default
    return value