On Oct 21, 3:56 pm, Ethan Furman <et...@stoneleaf.us> wrote: > Jonas H. wrote: > > 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). > > Um, no. (unless you do "from <whatever> import *" at the module level) > > What it does is add whatever you imported into the namespace where you > imported it. > > Because y.py has "from x import x" the x class from x.py is added to the > y.py namespace. > > ~Ethan~- Hide quoted text - > > - Show quoted text -
So what is usually done to prevent this? (In my case not wanting class x added to the y.py namespace) It seems sloppy. -- http://mail.python.org/mailman/listinfo/python-list