[Python-ideas] `issubclass` shouldn't be raising exceptions for non-type inputs

Steven D'Aprano steve at pearwood.info
Mon Nov 29 01:13:00 CET 2010


cool-RR wrote:

>> Unfortunately it would be a backwards incompatible change. Currently
>> catching the TypeError from issubclass is a way of detecting that an object
>> *isn't* a type.
>>
> 
> Who is doing that?! What's wrong with something like `isinstance(thing,
> (type, types.ClassType))`?

Is that a serious question? Trying something, and catching the exception 
if it fails, is a general Python idiom. In many case, it's often 
considered more "pythonic" to write:

try:
     handle normal case (which might fail)
except SomeException:
     handle exceptional case

than:

if operation will fail:
    handle exceptional case
else:
    handle normal case (which hopefully won't fail)


since at least Python 1.5. It's been long considered "best practice" 
under many circumstances to catch exceptions rather than to try to 
preemptively guess what might go wrong.


-- 
Steven




More information about the Python-ideas mailing list