Lament: Import is not very smart.
Lonnie Princehouse
fnord at u.washington.edu
Tue Jul 13 18:25:50 EDT 2004
I don't know if this is a bug or a feature, but it sure is annoying.
I apologize if it's already been discussed to death elsewhere (I
couldn't find anything).
Suppose that you've a package named "foo" which contains module "bar".
Because you're careless, you've also put foo/ into your path...
Here's the problem:
>> import foo.bar
>> import bar
>> foo.bar == bar
False
The second import doesn't recognize that "bar" is already loaded as
foo.bar, and loads the module again. I know it's easy to avoid this
by being consistent, but wouldn't be more intuitive if import checked
a hash of loaded module filenames before importing something anew?
E.g.
>> import foo.bar
>> import bar
>> foo.bar == bar
True
It's probably too late to change, but it's food for thought.
(addendum: I ran into this when isinstance seemingly malfunctioned
while I was patching together lots of modules into a cohesive package;
turns out there were some instances that had been created from
package.module.class and others that were instances of module.class..
it took a while to figure out just what the problem was)
More information about the Python-list
mailing list