Referencing module.instance

Gnarlodious gnarlodious at gmail.com
Fri Dec 2 22:49:22 EST 2011


To explain my reasoning, this scheme will allow me to run the script three ways, as shell, as one-shot CGI or as a persistent mod_wsgi module.

So to be more exhaustive:

In __init__ I can say:

import Grid
self.Grid = Grid.Grid

self.Grid is now the instance of Grid inside the module Grid.

then later on I __call__ with the input data:

html=self.Grid(queryString, environ)

and this works great for one module, a default output which is now running on my server.


But now I want to use the query string to load the instance, which means it comes in as text. Say I load a list of modules:
allowedPages=['Gnomon', 'Grid', 'Lexicon', 'Harmonics']

I need to import them all at __init__, and set the instance for each like this:
self.Gnomon=Gnomon.Gnomon
self.Grid=Grid.Grid
self.Lexicon=Lexicon.Lexicon
self.Harmonics=Harmonics.Harmonics

Then dynamically, in __call_, I just use the CGI string to invoke my target object.

What I have now is:

self.modules = {} 
page = 'Gnomon'
self.modules[page] = __import__(page)

which gives me

<module 'Gnomon' from '~/Sites/Sectrum/Gnomon.py'>

A solution is to set self.modules[page] to the Gnomon instance of the Gnomon module. How to?

-- Gnarlie
http://Sectrum.com




More information about the Python-list mailing list