Oh, that's right, I should have tried to example in the interpreter instead of in my head:P
Say Bob, Is that the preferred method over something like: >>> import __main__ as main On Wed, Aug 4, 2010 at 3:32 PM, bob gailer <bgai...@gmail.com> wrote: > On 8/4/2010 1:23 PM, Pete wrote: > > Hi, > > I'm trying to understand the syntax for reflection in python. I was > wondering about this. > > From the example on diveintopython: > > http://diveintopython.org/power_of_introspection/index.html > > import statsout > def output(data, format="text"): > output_function = getattr(statsout, "output_%s" % format, > statsout.output_text) > return output_function(data) > > I was wondering about how to make this work if the function that you > are trying to call is not in a module. > > > Everything in Python is in a module. I suspect you mean not in an imported > module, e.g. in the main module. Whose __name__ is '__main__'. A reference > to the main module can be found: > > import sys > main = sys.modules['__main__'] > > Is that possible? > > Something like this: > > def output_text(data): > > return_value = "This is text: " + data > return return_value > > def output(data, format="text"): > output_function = getattr(*****, "output_%s" % format, > statsout.output_text) > return output_function(data) > > > What I can't figure out is what to put in place of *****. I've tried > globals()['__name__'], in various forms, to no avail. > > > Replace those stars with main as derived above. > > globals()['output_text'] will also give you a reference to the function. > > -- > Bob Gailer > 919-636-4239 > Chapel Hill NC > > > _______________________________________________ > Tutor maillist - Tutor@python.org > To unsubscribe or change subscription options: > http://mail.python.org/mailman/listinfo/tutor > >
_______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor