[Python-de] Funktionscall per "String"

Christopher Arndt chris.arndt at web.de
Son Okt 5 15:50:47 CEST 2003


Am 10/05/2003 12:54 PM schrieb Klaus-G. Meyer:
> Hallo,
> 
> wenn ich den Namen ein Funktion, welche ich aufrufen möchte, in einem 
> String habe, wie kann ich diese aufrufen? Geht bestimmt ganz simple, 
> aber ich komme grad nicht drauf :-(
> 
> def test():
>     print "Test"
> 
> a= "test"
> 
> Und nun irgendwie call a...
> Dazu müsste man aus dem String in a ein callable objekt machen.

Kommt darauf an, in welchem Namensraum 'test' definiert ist.

Wenn 'test' in einem Modul oder einer Klasse 'foo' definiert ist und 
a='test':

getattr(foo, a)()

Ebenso geht:

eval('foo.%s()' % a)

bzw. im globalen oder lokalen Namensraum:

eval('%s()' % a)

und natürlich die Lösung von Oliver Horn.


Hdh, Chris