[Python-bugs-list] [ python-Bugs-493628 ] import not pythonic in 2.1.1

noreply@sourceforge.net noreply@sourceforge.net
Sun, 16 Dec 2001 04:58:44 -0800


Bugs item #493628, was opened at 2001-12-15 03:37
You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=105470&aid=493628&group_id=5470

Category: Python Interpreter Core
Group: Not a Bug
Status: Closed
Resolution: Wont Fix
Priority: 5
Submitted By: Chris Withers (fresh)
Assigned to: Nobody/Anonymous (nobody)
Summary: import not pythonic in 2.1.1

Initial Comment:
Take a package 'aPackage', which contains a sub-package 'aSubPackage' that in turn contains a 
module 'aModule' that defines a class 'aClass'.

If I do:

import aPackage.aSubPackage
print aPackage.aSubPackage.aModule

I get:

Traceback (most recent call last):
  File "x.py", line xx, in ?
    print aPackage.aSubPackage.aModule
AttributeError: 'aPackage.aSubPackage' module has no attribute 'aModule'

A yet, if I do:

import aPackage.aSubPackage.aModule
print aPackage.aSubPackage.aModule

I get:
<module 'aPackage.aSubPackage.aModule' from 'some_path'>

...as expected, which is very confusing and doesn't feel 'right' :-S




----------------------------------------------------------------------

>Comment By: Chris Withers (fresh)
Date: 2001-12-16 04:58

Message:
Logged In: YES 
user_id=24723

Well, I read it, and it explains the history, but it doesn't give reasons, particularly for:

> Contrarily, when using syntax like import item.subitem.subsubitem, each item except for the last must be 
a package; the last item can be a module
> or a package but can't be a class or function or variable defined in the previous item. 

...or for the above stuff.

But, while I find it counter-intuitive (and means I have to use unpleasant exec statements), I am but one 
voice among many who probably feel differently so I'll just accept it as one of the things i don't like about 
python...

thanks for your time :-)

Chris


----------------------------------------------------------------------

Comment By: Guido van Rossum (gvanrossum)
Date: 2001-12-15 09:46

Message:
Logged In: YES 
user_id=6380

http://www.python.org/doc/essays/packages.html

----------------------------------------------------------------------

Comment By: Chris Withers (fresh)
Date: 2001-12-15 09:15

Message:
Logged In: YES 
user_id=24723

Okay, if it's intended, that means there's a good reason for it...

...where can I look for enlightenment as to what that is?

cheers,

Chris

----------------------------------------------------------------------

Comment By: Guido van Rossum (gvanrossum)
Date: 2001-12-15 07:39

Message:
Logged In: YES 
user_id=6380

Better adjust your intuition. :-)

This is as intended. Attributes of packages that are
*modules* are only loaded when the corresponding module is
explicitly imported (by you, or by some other code, e.g. the
package's __init__.py).

----------------------------------------------------------------------

You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=105470&aid=493628&group_id=5470