Dynamic call of a method : error
Thomas Wouters
thomas at xs4all.net
Sat Jul 7 11:08:49 EDT 2001
On Wed, Jul 04, 2001 at 06:28:41PM -0500, Volucris wrote:
> #the name of the module you're digging in dynamically
> mod_name = 'gc'
> #import the module dynamically
> exec 'import %s' % mod_name
> #create a copy of the module dynamically
> mod_copy = eval('%s' % mod_name)
Or, more efficient and more readable (IMHO):
mod_copy = __import__(mod_name)
> for method in dir(mod_copy):
> try:
> #retrieve each member's docstring dynamically...
> print eval('%s.%s' % (mod_name, method)).__doc__
> except AttributeError:
> #unless it can't have one (ints, floats, etc.)
> print 'No \'__doc__\' for %s.' % method
'getattr()' is much more appropriate than eval() here, and in fact in most
places. The tree-argument version is also particularly useful in this case:
for method in dir(mod_copy):
print getattr(mod_copy, method, "No docstring for %s"%method)
> Please excuse the excessize use of the word 'dynamically'. I really like
> that word.
Not as much as you seem to like 'eval' and 'exec' :-)
--
Thomas Wouters <thomas at xs4all.net>
Hi! I'm a .signature virus! copy me into your .signature file to help me spread!
More information about the Python-list
mailing list