Dyanmic import of a class

Scott David Daniels scott.daniels at acm.org
Fri Mar 9 01:07:15 EST 2007


   Arnaud Delobelle wrote:
> On Mar 8, 9:09 pm, "rh0dium" <steven.kl... at gmail.com> wrote:
> [snip]
>> for mod in listdir():
>>    __import__(mod)
>>    a=mod()
>>    a.dosomething()  # This is a function which each class shares.
>>
>> Can anyone help?
> 
> You are not using __import__ correctly.  Perhaps reading the doc would
> be a good start:
> http://docs.python.org/lib/built-in-funcs.html
> 
> For example to import the module defined in 'foo.py' you would do
> foo = __import__('foo')
> Then your class foo would be accessible as foo.foo

To get even more explicit:
     import glob, os.path
     for filename in glob.glob('*.py*'):
         modname, ext = os.path.splitext(filename)
         try:
             class_ = getattr(__import__(modname), modname)
         except (ImportError, AttributeError, SyntaxError), err:
	    print filename, modname, err
	else:
             class_().dosomething()

-- 
--Scott David Daniels
scott.daniels at acm.org



More information about the Python-list mailing list