Re: how to get a reference to the __main__ module
In article hun8s4$h4...@news.albasani.net, WH whz...@gmail.com wrote: 'x' in getattr() should be a reference to the __main__ module, right? How to get it? Just for the record, the best way to get a reference to __main__ is to import it: import __main__ -- Aahz (a...@pythoncraft.com) * http://www.pythoncraft.com/ If you don't know what your program is supposed to do, you'd better not start writing it. --Dijkstra -- http://mail.python.org/mailman/listinfo/python-list
how to get a reference to the __main__ module
Hi, I want to use one of two functions in a script: def func_one(): pass def func_two(): pass func = getattr(x, 'func_'+number) func() 'x' in getattr() should be a reference to the __main__ module, right? How to get it? The 'if' clause should work here. I am just curious if we can use the above method. Thanks, -WH -- http://mail.python.org/mailman/listinfo/python-list
Re: how to get a reference to the __main__ module
On Tue, Jun 8, 2010 at 10:29 PM, WH whz...@gmail.com wrote: Hi, I want to use one of two functions in a script: def func_one(): pass def func_two(): pass func = getattr(x, 'func_'+number) func() 'x' in getattr() should be a reference to the __main__ module, right? How to get it? from sys import modules __main__ = modules[__main__] # or call the variable whatever you want assert __main__.__dict__ is globals() # purely for pedagogy func = getattr(__main__, 'func_'+number) Of course, in your particular case, the code can be simplified to avoid getattr() altogether: func = globals()['func_'+number] Cheers, Chris -- http://blog.rebertia.com -- http://mail.python.org/mailman/listinfo/python-list
Re: how to get a reference to the __main__ module
On Tue, 08 Jun 2010 22:29:04 -0700, WH wrote: Hi, I want to use one of two functions in a script: def func_one(): pass def func_two(): pass func = getattr(x, 'func_'+number) func() 'x' in getattr() should be a reference to the __main__ module, right? How to get it? # File test.py def func_one(): return one = 1 def func_two(): return two = 2 if __name__ == '__main__': import __main__ func = getattr(__main__, 'func_' + 'two') print func() import test print getattr(test, 'func_' + 'one')() which works, but importing yourself can be tricky. Try taking the if __name__ test out and running the script and see what happens. This is probably a better way to solve your problem that doesn't rely on the module importing itself: def func_one(): return one = 1 def func_two(): return two = 2 funcs = {'one': func_one, 'two': func_two} print funcs['one'] -- Steven -- http://mail.python.org/mailman/listinfo/python-list