Hva er den beste måten å gå frem for å kalle en funksjon gitt en streng med funksjonens navn i et Python-program. La oss for eksempel si at jeg har en modul foo
, og jeg har en streng med innholdet "bar"
. Hva er den beste måten å kalle foo.bar()
på?
Jeg trenger å få returverdien til funksjonen, og det er derfor jeg ikke bare bruker eval
. Jeg fant ut hvordan jeg kunne gjøre det ved å bruke eval
til å definere en midlertidig funksjon som returnerer resultatet av funksjonskallet, men jeg håper det finnes en mer elegant måte å gjøre dette på.
Forutsetter modul foo
med metode bar
:
import foo
method_to_call = getattr(foo, 'bar')
result = method_to_call()
Du kan forkorte linje 2 og 3 til:
result = getattr(foo, 'bar')()
hvis det gir mer mening for ditt bruksområde.
Du kan bruke getattr
på denne måten på klasseforekomstbundne metoder, metoder på modulnivå, klassemetoder ... listen er lang.