weird isinstance/issubclass behavior?
lars van gemerden
lars at rational-it.com
Thu Nov 29 15:59:37 CET 2012
I have encountered some strange behavior of isinstance(/issubclass): depending on the import path used for classes i get different output, while the classes i compare are in the same file.
Basically if i import a class as:
from mod1.mod2 import A
from mod0.mod1.mod2 import A
which both result in importing the same class, a call to isinstance(inst, A) in another module can have a different output. In this module
print type(inst), A, isinstance(inst, A), issubclass(type(inst), A)
<class 'mod0.mod1.mod2.A'> <class 'mod1.mod2.A'> False False
<class 'mod0.mod1.mod2.A'> <class 'mod0.mod1.mod2.A'> True True
which seems somewhat logical, but in my case a strange gotcha. My question is:
Is this intended, inevitable or a bug?
PS: this is somewhat simpler than the actual case i've encountered, and i haven't tested this exact case, but for now i hope this is enough to get some of your insight.
More information about the Python-list