Guido van Rossum email@example.com writes:
I can't see any implementation benefits from the requirement. It sounds like you can't either
If the requirement was extended to disallow multiple root classes, it would disambiguate the case of the class Z(str,Exception): It would be an error to raise an exception of class Z. Classes that only inherit from str would continue to operate as string exceptions, classes that inherit from Exception would be caught by their type - you couldn't have a class that is both.
Yeah, but that's only a backwards compatibility hack. Eventually, string exceptions will be illegal, and then I don't see a good reason why exceptions couldn't derive from multiple classes. So I don't want to start with such a restriction. I'd rather continue to special-case string exceptions.
There's no reason why in your example, the exception couldn't match both Exception and a string.
--Guido van Rossum (home page: http://www.python.org/%7Eguido/)