import collections class MySimpleSet(collections.Set): def __init__(self, iterable=()): self.inner = set(iterable) def __contains__(self, item): return item in self.inner def __iter__(self): return iter(self.inner) def __len__(self): return len(self.inner) MySimpleSet() | set() # This works set() | MySimpleSet() # This doesn't