Ben Finney <[EMAIL PROTECTED]> wrote: > I want my modules to (sometimes) define an abstract base exception > class, that all other exceptions in that module inherit from.
[re-posting with the implementation properly foo-ified] Not a whole lot of feedback on this, so here's the implementation I decided upon. class FooException(Exception): """ Base class for all exceptions in this module """ def __init__(self): if self.__class__ is FooException: raise NotImplementedError, \ "%s is an abstract class for subclassing" % self.__class__ class FooBarTypeError(TypeError, FooException): """ Raised when the foo gets a bad bar """ class FooDontDoThatError(AssertionError, FooException): """ Raised when the foo is asked to do the wrong thing """ This allows the exceptions for the module to behave similarly to their leftmost base exception; but because they all inherit from the abstract base class exception for the module, it also allows for this idiom: import foo try: foo.do_stuff(bar) except FooException, e: special_error_handler(e) Any more comment on this technique? Any other significant use cases for abstract base classes? -- \ "For man, as for flower and beast and bird, the supreme triumph | `\ is to be most vividly, most perfectly alive" -- D.H. Lawrence. | _o__) | Ben Finney -- http://mail.python.org/mailman/listinfo/python-list