class Mapping: def __init__(self, iterable): self.items_list = [] self.update(iterable) def update(self, iterable): for item in iterable: self.items_list.append(item) class MappingSubclass(Mapping): def update(self, keys, values): # provides new signature for update() # and breaks __init__() for item in zip(keys, values): self.items_list.append(item) if __name__ == '__main__': m = Mapping([1,2,3]) n = MappingSubclass([3,4,5])