import copy


def deep_copy_without_fields(obj, fields_to_be_omitted):
    """Deep copies obj omitting some fields.

    Args:
        obj: Object to be copied.
        fields_to_be_omitted: Fields which will not be copied.

    Returns:
        Copied object without specified fields.
    """
    values_to_save = [getattr(obj, field_name)
                      for field_name in fields_to_be_omitted]
    for field_name in fields_to_be_omitted:
        setattr(obj, field_name, None)

    new_obj = copy.deepcopy(obj)

    for field_name, val in zip(fields_to_be_omitted, values_to_save):
        setattr(obj, field_name, val)

    return new_obj