[Fwd: Lament: Import is not very smart.]
Paul Prescod <[email protected]> Thu, 15 Jul 2004 03:27:08 -0700
| Newsgroups | gmane.comp.lang.prothon.user |
|---|---|
| Message-ID | <[email protected]> |
Another Python quirk to avoid... -------- Original Message -------- Subject: Lament: Import is not very smart. Date: 13 Jul 2004 15:25:50 -0700 From: [email protected] (Lonnie Princehouse) Organization: http://groups.google.com To: [email protected] Newsgroups: comp.lang.python 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) -- http://mail.python.org/mailman/listinfo/python-list