import abc class LibrarianException(Exception, metaclass=abc.ABCMeta): @abc.abstractproperty def error_msg(self): pass def __str__(self): return self.error_msg class PermissionsError(LibrarianException): def __init__(self, permission_string): self.permission_string = permission_string @property def error_msg(self): return "Need privilege level {}".format(self.permission_string) class NoHighlightedEntry(LibrarianException): error_msg = "No highlighted entry"