[Python-Dev] Relative import
Devin
devin at whitebread.org
Tue Dec 23 13:45:18 EST 2003
On Tue, 23 Dec 2003, Ken Manheimer wrote:
> > 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 :)
>
> Truly, yuck. But in my model, the leading '.' dot, itself, stands for
> the containing package, and '..' stands for the containing package's
> package, and so forth:
>
> import ..e # [parent-of-parent].e
I can't quite get used to the idea of '.' having two different meanings
depending on how many '.'s are found next to each other in an import
statement. I believe that the notation above _is_ concise, but _is not_
very intuitive ...
> Even using the leading '.' syntax, it would be good to have a specific
> identifier for the containing package, realized in each module and
> respected as a special identifier by the package machinery. I like
> '__pkg__':
>
> import __pkg__.sibling # == 'import .sibling'
>
> and
>
> import __pkg__.__pkg__.uncle # == 'import ..uncle'
> import __pkg__.__pkg__.uncle.cousin # == 'import ..uncle.cousin'
... while the notation here _is_ intuitive (to a python programmer), but
_is not_ concise. I still favor this syntax to the former syntax.
I like '__pkg__' better than my initial suggestion ('__parent__'). It's
more aesthetically pleasing. :)
--
Devin
devin at whitebread.org
http://www.whitebread.org/
More information about the Python-Dev
mailing list