How to refer to the current module?

Guilherme Polo ggpolo at gmail.com
Mon Jan 7 08:30:52 EST 2008


2008/1/7, Mike <ckimyt at gmail.com>:
> 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?

globals() =)

>
> Thanks in advance for all advice!
>
> Mike
> --
> http://mail.python.org/mailman/listinfo/python-list
>


-- 
-- Guilherme H. Polo Goncalves



More information about the Python-list mailing list