Odd behavior of object equality/identity in the context of relativevs fully qualified imports

Discussion in 'Python' started by Nathan Rice, Dec 15, 2011.

  1. Nathan Rice

    Nathan Rice Guest

    I just ran into this yesterday, and I am curious if there is a
    rational behind it...

    I have a class that uses a dictionary to dispatch from other classes
    (k) to functions for those classes (v). I recently ran into a bug
    where the dictionary would report that a class which was clearly in
    the dictionary's keys was giving a KeyError. id() produced two
    distinct values, which I found to be curious, and
    issubclass/isinstance tests also failed. When I inspected the two
    classes, I found that the only difference between the two was the
    __module__ variable, which in one case had a name relative to the
    current module (foo), and in another case had the fully qualified name
    (bar.foo). When I went ahead and changed the import statement for the
    module to import bar.foo rather than import foo, everything worked as
    expected. My first thought was that I had another foo module in an
    old version of the bar package somewhere on my pythonpath; After a
    thorough search this proved not to be the case.

    Has anyone else run into this? Is this intended behavior? If so, why?

    Nathan Rice, Dec 15, 2011
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.