from collections import MutableSet class WithSet(MutableSet): def __init__(self, it=()): self.data = set(it) def __len__(self): return len(self.data) def __iter__(self): return iter(self.data) def __contains__(self, item): return item in self.data def add(self, item): self.data.add(item) def discard(self, item): self.data.discard(item) class WithList(MutableSet): def __init__(self, it=()): self.data = list(it) def __len__(self): return len(self.data) def __iter__(self): return iter(self.data) def __contains__(self, item): return item in self.data def add(self, item): if item not in self.data: self.data.add(item) def discard(self, item): try: self.data.remove(item) except ValueError: pass