[Python-Dev] Relative import (original) (raw)
Devin devin at whitebread.org
Mon Dec 22 13:36:45 EST 2003
- Previous message: [Python-Dev] Relative import
- Next message: [Python-Dev] Relative import
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
I've been monitoring all of this discussion about relative imports, and have my own humble idea about how to spell relative imports.
The first part stems from Guido's idea about using a '.' at the beginning of a relative import. It seemed a bit weird at first, but I eventually became very comfortable with the idea after thinking about it in respect to absolute imports. I'll explain what I mean.
If you currently want to import a module 'a.b.c.d', you write:
import a.b.c.d
Now, if you're in the module 'a.b', you could still write:
import a.b.c.d
... but the 'a.b' part is redundant because you're already in the module 'a.b'. If you take away 'a.b', then you end up with:
import .c.d
This flowed well in my head, and looks natural. However, the suggestion about '.' or '..' referring to the parent looks ugly and unnatural.
Let's say '.' was used to spell "parent module", and let's assume that the module 'a.b.c.d' wants to import 'a.b.e'. The absolute import would be spelled:
import a.b.e
... and the relative import would be spelled:
import .....e # .[parent].[parent].e
Yuck! (no offense :)
What's needed, I believe, is an identifier/keyword/symbol that spells 'parent' that isn't '.'. Assuming that symbol is represented by '[parent]', the above relative import would look like:
import .[parent].[parent].e
... which is a hell lot more clear IMHO.
My initial idea is to spell parent 'parent', and to have 'parent' be a module-level variable in each module that refers to the parent module (where a top-level module might have 'parent' refer to itself, or to None). Continuing with the above example, the relative import would be spelled:
import .__parent__.__parent__.e
... but I'm not completely convinced that there's not a better identifier/keyword/symbol that could be substituted for '[parent]'.
If I'm completely off track, then tell me and I'll continue to lurk until I get a better feel for the happenings of python-dev.
-- Devin devin at whitebread.org http://www.whitebread.org/
- Previous message: [Python-Dev] Relative import
- Next message: [Python-Dev] Relative import
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]