[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.python

Re: How to refer to the current module?

exarkun

1/7/2008 1:53:00 PM

On Mon, 7 Jan 2008 05:21:42 -0800 (PST), Mike <ckimyt@gmail.com> wrote:
>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?

How about doing "import driver" and then using "getattr(driver, ...)"?

Jean-Paul