def make_object(row, names, constructor):
    """Turns a row of values into an object.

    row: row of values
    names: list of attribute names
    constructor: function that makes the objects

    Returns: new object
    """
    obj = constructor()
    for name, val in zip(names, row):
        func = constructor.convert.get(name, int)
        try:
            val = func(val)
        except:
            pass
        setattr(obj, name, val)
    obj.clean()
    return obj