Kay Schluehr wrote: > I wonder why the isinstance() function is sensitive about the import > path i.e. the result depends not only on the class and the instance but > also on how a class is imported?
isinstance uses class object identity. if you manage to import the same thing multiple times, you'll have multiple class objects representing the same source code, and is- instance won't work properly. > Example: > > MyPackage/ Top-level package > __init__.py Initialize package > __me__.py Module used for setting Python-path > A.py Use objects of ForeignPackage and > subpackages > ForeignPackage/ Don't touch! > __init__.py Initialize package > B.py Defines class B1 > MySubPackage/ Subpackage > __init__.py Initialize subpackage > C.py Defines instance checker for B1 instances in my newsreader, it looks like the C.py module is defined some- where inbetween MyPackage and MyPackage/ForeignPackage. what file system are you using? ;-) (I don't have the energy to decipher your convoluted import and path-manipulation code; but my intuition tells me that if you flatten the hierarchy, put MyPackage and ForeignPackage at the same level, and stop messing with the path inside the __init__ files, your problems will just disappear). </F> -- http://mail.python.org/mailman/listinfo/python-list