Loading a class the name of which is only known runtime
Bjarke Dahl Ebert
bjarke-news2003 at trebe.dk
Tue Apr 8 21:01:56 CEST 2003
"Mads Orbesen Troest" <mads at troest.NEVERMORE.dk> wrote in message
> Actually, what I am looking for is more alone the lines of:
> moduleToImport = "SomeModule" # <- Retrieved as CGI argument
> classToInstantiate = "SomeClass" # <- Retrieved as CGI argument
> import moduleToImport
> someInstance = classToInstantiate()
Have a look at the builtin function __import__.
themodule = __import__(themodulename)
theclass = getattr(themodule, theclassname)
a = theclass()
There is a slight complication, though:
If themodulename is of the form "foo.bar", then module foo is returned. Some
themodulename.split('.'), and additional getattr calls should help.
Of course, there are all kinds of security issues with doing __import__ and
getattr like this in a CGI script...
More information about the Python-list