embarrassing class question

Jonas H. jonas at lophus.org
Thu Oct 21 14:38:27 EDT 2010


On 10/21/2010 08:09 PM, Brendan wrote:
> Two modules:
> x.py:
> class x(object):
>      pass
>
> y.py:
> from x import x
> class y(x):
>      pass
>
> Now from the python command line:
>>>> import y
>>>> dir(y)
> ['__builtins__', '__doc__', '__file__', '__name__', '__package__',
> 'x', 'y']
>
> I do not understand why class 'x' shows up here.

Because that's how `import` behaves. It imports *every* member of the 
module into the importing module's global namespace (except for 
attributes that start with an underscore).

You can specify the attributes that shall be import with a star-import 
by settings __all__. In your case, you would add `__all__ = ['y']` to y.py.

Jonas



More information about the Python-list mailing list