'Create an instance of the appropriate subclass.'

def __new__(cls, *system, **kwargs):

    if (cls is dlti):
        N = len(system)
        if (N == 2):
            return TransferFunctionDiscrete.__new__(TransferFunctionDiscrete, *system, **kwargs)
        elif (N == 3):
            return ZerosPolesGainDiscrete.__new__(ZerosPolesGainDiscrete, *system, **kwargs)
        elif (N == 4):
            return StateSpaceDiscrete.__new__(StateSpaceDiscrete, *system, **kwargs)
        else:
            raise ValueError('`system`    needs    to    be    an    instance    of    `dlti`    or    have    2,    3    or    4    arguments.')
    return super(dlti, cls).__new__(cls)
