[Python-ideas] threading lock and isinstance

Jacco van Dorp j.van.dorp at deonet.nl
Thu Mar 29 05:43:20 EDT 2018

Currently, you cannot use isinstance checks on threading locks, because
they're created by a factory function instead of being actual classes.

Now that we've got __subclasshook__  and __instancecheck__, is there
still a reason other than "history" that we can't use isinstance here ? There
could exist a thin wrapper class along the lines of:

class Lock:
    def __new__():
        return __allocate_lock()  # Call factory function

    def __subclasshook__(cls, inst):
        # code...

As far as I can think, no code would be broken by this - even current
which we're trying to replace would work just fine.

My C experience is rather limited, so i dont know if it's hard to
write the subclass
/isinstance checks.

While probably not that important, would people consider this to be a
good idea ?

(I found this bug report: https://bugs.python.org/issue3352 which has
a post of Nick Coghlan  from 2008-07-14 22:25 where this is mentioned
- but in respect to multiprocessing. However, that thread is rather
old and dead. I could not find any other references to this.)

More information about the Python-ideas mailing list