[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