something wrong with isinstance

Peter Otten __peter__ at web.de
Fri Feb 13 05:43:03 EST 2009


Gabriel Genellina wrote:

> En Fri, 13 Feb 2009 08:07:58 -0200, Carl Banks <pavlovevidence at gmail.com>
> escribió:
> 
>> Well, the OP said he was using Python 3.0, where all classes are new-
>> style classes.
>>
>> But that brings up another very slight possibility, though not a very
>> likely one in this case: the behavior of isinstance can be
>> customized.  It can happen unbeknownst to a user who subclasses a
>> class that does that.
> 
> Really? I didn't know that -- how do you do that?
 
>>> class Type(type):
...     def __instancecheck__(self, other): return True
...
>>> class A(metaclass=Type): pass
...
>>> class B: pass
...
>>> isinstance(B(), A)
True

See also 

http://www.python.org/dev/peps/pep-3119/#overloading-isinstance-and-issubclass

I doubt that this is the source of the OP's troubles, though.

Peter



More information about the Python-list mailing list