Hi all,
I'm playing with python internals and I'm discovering a strange behavior
of isinstance. Considering the following test case:

test/bar.py
test/b.py
test/a/__init__.py
test/a/foo.py

-- __init__.py -> empty

--- foo.py:
class foo: pass
c = foo

--- b.py
def ret():
  d = {}
#s = "import sys;sys.path.append('a');import foo" ## this cause the problem
  s = "import sys;from a import foo"
  exec s in d
  return d["foo"].c

--- bar.py
import a.foo
import b

c1 = a.foo.foo
c2 = b.ret()

print c1, c2
print isinstance(c2(), c1)
---

Executing bar.py, I receive:
a.foo.foo a.foo.foo
True

But, if I replace the indicated line, python doesn't recognize anymore
the instance and I receive:
a.foo.foo foo.foo
False

Why? I don't understand how python see the instance. Or
better, does it see only the path? The classes (and the instances) are the same!

Thanks for all that help me to turn the light on...

Michele
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to