'Use __new__ instead of __init__ to output a class instance that
is the same as the class of the first Time object in the list.'

def __new__(cls, val1, val2, scale, precision, in_subfmt, out_subfmt, from_jd=False):

    val1_0 = val1.flat[0]
    if (not (isinstance(val1_0, Time) and all(((type(val) is type(val1_0)) for val in val1.flat)))):
        raise TypeError(u'Input    values    for    {0}    class    must    all    be    same    astropy    Time    type.'.format(cls.name))
    if (scale is None):
        scale = val1_0.scale
    if val1.shape:
        vals = [getattr(val, scale)._time for val in val1]
        jd1 = np.concatenate([np.atleast_1d(val.jd1) for val in vals])
        jd2 = np.concatenate([np.atleast_1d(val.jd2) for val in vals])
    else:
        val = getattr(val1_0, scale)._time
        (jd1, jd2) = (val.jd1, val.jd2)
    OutTimeFormat = val1_0._time.__class__
    self = OutTimeFormat(jd1, jd2, scale, precision, in_subfmt, out_subfmt, from_jd=True)
    return self
