How to refer to the current module?
Mike
ckimyt at gmail.com
Mon Jan 7 08:21:42 EST 2008
I want to do something like the following (let's pretend that this is
in file 'driver.py'):
#!/bin/env python
import sys
def foo():
print 'foo'
def bar(arg):
print 'bar with %r' % arg
def main():
getattr(driver, sys.argv[1])(*sys.argv[2:])
if __name__=='__main__':
main()
Essentially what I'm trying to get at here is dynamic function
redirection, like a generic dispatch script. I could call this as
python driver.py foo
or
python driver.py bar 15
and at any time later I can add new functions to driver.py without
having to update a dispatch dict or what-have-you.
The problem is, 'driver' doesn't exist in main() line 1. If I 'import
driver' from the command line, then getattr(driver, ...) works, but
it's not bound here.
Is there any way around this? Can I somehow scope the 'current
module' and give getattr(...) an object that will (at run time) have
the appropriate bindings?
Thanks in advance for all advice!
Mike
More information about the Python-list
mailing list