On Sat, May 7, 2011 at 12:03 PM, andrew cooke <and...@acooke.org> wrote: > > This isn't hugely surprising, but doesn't seem to be documented. Is it a > bug, or worth raising as one, or have I misunderstood? > > > Python 3.2 (r32:88445, Feb 27 2011, 13:00:05) > [GCC 4.5.0 20100604 [gcc-4_5-branch revision 160292]] on linux2 > Type "help", "copyright", "credits" or "license" for more information. >>>> from abc import ABCMeta >>>> class RootException(Exception,metaclass=ABCMeta): pass > ... >>>> class MyException(Exception): pass > ... >>>> RootException.register(MyException) >>>> try: > ... raise MyException > ... except RootException: > ... print('caught') > ... > Traceback (most recent call last): > File "<stdin>", line 2, in <module> > __main__.MyException > > If you assume that the ABC "register" class should work likeinheritance (as > it does with issubclass and isinstance then you would, I think, have expected > the exception above to have been caught.
Seems worth filing a bug IMO; it probably deserves clarification in the docs if nothing else, though this behavior isn't inconsistent with them as they're currently written (due to the vagaries of natural language). Cheers, Chris -- http://mail.python.org/mailman/listinfo/python-list