On Jul 15, 10:08 pm, "Gabriel Genellina" <[EMAIL PROTECTED]> wrote: > En Sun, 15 Jul 2007 08:49:54 -0300, Alex Popescu > <[EMAIL PROTECTED]> escribió: > > > > >> > But, I still don't understand how python can access a function in a > >> > file I have NOT included. In this case, to get things to work, I DO > >> > NOT "import MMA.grooves" but later in the module I access a function > >> > with "xx=MMA.grooves.somefunc()" and it finds the function, and works > >> > just fine. It shouldn't work. > > >> That depends a bit on what is "MMA" and what is "grooves". > >> MMA.grooves means "look for an attribute named grooves inside MMA". If > >> MMA > >> is a module, and MMA.grooves is a class/function defined inside the > >> module, you don't need to import it before using it. > > > I am a bit confused: I think the above should be: > > > if MMA.grooves in a class/function defined inside the module MMA, you > > don't need to import the > > class/function before using it, but only import the module MMA. > > > Am I wrong? > > You are right, but we were talking about a slightly different scenario. To > make things clear: > > 1) > import MMA > xx=MMA.grooves.somefunc() > > 2) > import MMA.grooves > xx=MMA.grooves.somefunc() > > If MMA is a module, containing a class named gooves, those two ways are > valid. > If MMA is a package, and grooves is a module contained in the package, > only the second one is valid (assuming the package has an empty > __init__.py, or does not import grooves itself) > > The OP was asking why the second form worked fine for him for a while, but > stopped working after reordering some imports. And the answer (according > to "Greg") is: some other module imported MMA.grooves, and that put > grooves into MMA namespace, available for everyone else. > > -- > Gabriel Genellina
Now, everything is 100% clear. bests, ./alex -- .w( the_mindstorm )p.
-- http://mail.python.org/mailman/listinfo/python-list