Hallo zusammen,
ich habe grad mal überlegt, dass bei vielen kleineren Scripten ein harmloser Dispatcher ja nicht immer über ein Dict aufgebaut werden müßte, so wie hier:
Code: Alles auswählen
def foo(): pass
def bar(): pass
dispatch = {"foo": foo, "bar": bar}
dispatch[sys.argv[1]]()
Sofern man die Namen als String 1:1 auf die Namen im Modul mappt, könnte man sich das Dict ja auch sparen. Mir fiel da spontan getattr() ein, allerdings benötigt das ja als ersten Parameter ein Objekt. Meine Frage ist also, ob / wie man an das Objekt des Moduls zugreifen kann?
Code: Alles auswählen
def foo(): pass
def bar(): pass
getattr(???, sys.argv[1])()
Oder kann man darauf gar nicht zugreifen? Gibt es dann ggf. eine Alternative, um von einem String auf ein Funktionsobjekt zu schließen?