class Dummy(object): def __getattr__(self, attr): try: return super(self.__class__, self).__getattr__(attr) except AttributeError: if attr in ('__base__', '__bases__', '__basicsize__', '__cmp__', '__dictoffset__', '__flags__', '__itemsize__', '__members__', '__methods__', '__mro__', '__name__', '__subclasses__', '__weakrefoffset__', '_getAttributeNames', 'mro'): raise else: return self def next(self): raise StopIteration def __repr__(self): return 'Dummy()' def __init__(self, *args, **kwargs): pass def __len__(self): return 0 def __eq__(self, other): return self is other def __hash__(self): return hash(None) def __call__(self, *args, **kwargs): return self __sub__ = __div__ = __mul__ = __floordiv__ = __mod__ = __and__ = __or__ = \ __xor__ = __rsub__ = __rdiv__ = __rmul__ = __rfloordiv__ = __rmod__ = \ __rand__ = __rxor__ = __ror__ = __radd__ = __pow__ = __rpow__ = \ __rshift__ = __lshift__ = __rrshift__ = __rlshift__ = __truediv__ = \ __rtruediv__ = __add__ = __getitem__ = __neg__ = __pos__ = __abs__ = \ __invert__ = __setattr__ = __delattr__ = __delitem__ = __setitem__ = \ __iter__ = __call__ Dummy = Dummy()