'A method which implements is_iterable property method.
If self.is_iterable returns True (both constituent sets are iterable),
then return the Cartesian Product. Otherwise, raise TypeError.'

def __iter__(self):

    if self.is_iterable:
        return product(*self.sets)
    else:
        raise TypeError('Not    all    constituent    sets    are    iterable')
