embarrassing class question

Brendan brendandetracey at yahoo.com
Thu Oct 21 20:53:05 CEST 2010


On Oct 21, 3:47 pm, Carl Banks <pavlovevide... at gmail.com> wrote:
> On Oct 21, 11:09 am, Brendan <brendandetra... at yahoo.com> 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 you imported it into the namespace, which is what the import
> statement does.  dir() shows you what's in the namesace; therefore it
> lists x.  dir() doesn't care, and can't know, if something was defined
> in a namespace, or merely imported.
>
> If it bothers you, you can put "del x" after the class y definition,
> but I recommend against doing that in general.  If there's a reference
> to x inside a function that function will raise an exception if
> called, because it expects x to be inside the namespace.
>
> Carl Banks- Hide quoted text -
>
> - Show quoted text -

So it must never make sense to put subclasses in separate modules?



More information about the Python-list mailing list