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() # but does not break __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])