On Sep 14, 4:43 am, Arnaud Delobelle <[EMAIL PROTECTED]> wrote:
> On Sep 14, 10:29 am, Steven D'Aprano <[EMAIL PROTECTED]
>
>
>
> cybersource.com.au> wrote:
> > I have a function that needs a reference to the module object it is
> > defined in. (For the reason why, if you care, see the thread "doctest not
> > seeing any of my doc tests" from a week ago.) I know of two ways to deal
> > with this problem, both of which feel unsatisfactory to me. Assume the
> > name of the module is "Mod", then I can do either of these:
>
> > def foo():
> >     import Mod
> >     process(Mod)
>
> > Disadvantage: If I change the name of the module, I have to remember to
> > change the name of the module reference in foo() twice.
>
> > def foo():
> >     modname = foo.__module__
> >     module = __import__(modname)
> >     process(module)
>
> > Disadvantage: if I change the name of the function, I have to remember to
> > change the reference to itself, but at least both changes are right next
> > to each other.
>
> > Assume that changing the function name or the module name are both
> > equally likely/unlikely.
>
> > Which do other people prefer? Which seems "better" to you? Are there any
> > other alternatives?
>
> What about something like:
>
>     sys.modules[__name__] ?
>
> --
> Arnaud

You're just worried about changing the module's name in the future.
So use a global variable or function that you only have to change
once.

def Mod_mod( ):
   import Mod as Mod #<-- only one change needed
   return Mod

def foo( ):
   process( Mod_mod( ) )
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to