Почему Python 'except' не использует 'isinstance'?

В документации Python для за исключением говорится:

Для предложения except с выражение, это выражение оценивается, и предложение соответствует исключение, если результирующий объект «Совместимый» за исключением. An объект совместим с исключением если это класс или базовый класс объекта исключения , [...]

Почему за исключением не использует isinstance вместо сравнения базовые классы? Это предотвращает использование __ instancecheck __ для отмены проверки экземпляра.

РЕДАКТИРОВАТЬ:

Я могу понять, что одна из причин, по которой этого не существует, заключается в том, что никто не учел его. Но есть ли причины, по которым это не должно быть реализовано?

EDIT:

Сеанс оболочки из Python 3.2a, показывающий, что попытка использовать __ subclasscheck __ для этого не работает:

>>> class MyType(type): __subclasscheck__ = lambda cls, other_cls: True
>>> class O(Exception, metaclass=MyType): pass
>>> issubclass(3, O)
0: True
>>> issubclass(int, O)
1: True
>>> try:
...     1/0
... except O:
...     print('Success')
Traceback (most recent call last):
  File "", line 2, in 
    1/0
ZeroDivisionError: division by zero
>>> 

8
задан Ram Rachum 1 October 2010 в 23:45
поделиться