class Registry(dict): unregister = dict.__delitem__ def check_key(self, key): pass def check_value(self, value): pass def check(self, key, value): try: self.check_key(key) except KeyError: raise except Exception as e: raise KeyError(e.message) try: self.check_value(value) except ValueError: raise except Exception as e: raise ValueError(e.message) def register(self, key, value): self.__setitem__(key, value) def __setitem__(self, key, value): self.check(key, value) super().__setitem__(key, value)