Seite 1 von 1
Funktionsnamen herausfinden?
Verfasst: Dienstag 6. Februar 2007, 17:12
von 7crystal7
Hallo Leute,
gibt es einen Befehl o.Ä. um den Funktions/Methodennamen auszugeben in der etwas ausgeführt wird?
Danke
Babsi
Verfasst: Dienstag 6. Februar 2007, 17:15
von CM
Hoi Babsi,
die Frage ist mir nicht ganz klar. Meinst Du das:
Code: Alles auswählen
>>> def foo():
... print foo.__name__
...
>>> foo()
foo
Oder meinst Du etwas Anderes?
Gruss,
Christian
Verfasst: Dienstag 6. Februar 2007, 17:18
von 7crystal7
ja so ungefähr,
ich möchte in einer funktion daten in ein logfile schreiben, dort soll auch der funktionsname der ausgeführt wird eingefügt werden. das kann ich ja so übergeben oder gibts dafür ne elegantere lösung?
danke!
babsi
Verfasst: Dienstag 6. Februar 2007, 18:13
von CM
Hi
na, den Funktionsnamen kannst Du natürlich auch auf einer anderen Ebene erhalten:
Im Grunde genommen aber weißt Du ohnehin den Namen der Funktion, die Du aufrufst, oder?
Gruß,
Christian
Verfasst: Dienstag 6. Februar 2007, 18:22
von birkenfeld
Du kannst das hier nutzen:
Code: Alles auswählen
def f():
log()
def log():
print sys._getframe(1).f_code.co_name
Mit den üblichen Warnungen (_getframe ist Implementationsdetail, also nicht auf andere Pythons übertragbar.)
Verfasst: Dienstag 6. Februar 2007, 18:44
von mitsuhiko
Ansonsten werfe ich noch sys.settrace ein:
http://paste.pocoo.org/show/930/
Verfasst: Donnerstag 8. Februar 2007, 11:23
von 7crystal7
danke für die vielen tips!
Lg
Babsi
Verfasst: Donnerstag 8. Februar 2007, 20:41
von nkoehring
birkenfeld hat geschrieben:Du kannst das hier nutzen:
Code: Alles auswählen
def f():
log()
def log():
print sys._getframe(1).f_code.co_name
Mit den üblichen Warnungen (_getframe ist Implementationsdetail, also nicht auf andere Pythons übertragbar.)
Oho... nette Funktion. Dieses _getframe steht ja nichtmal im normalen Docstring (achja, der _ am Anfang verhindert das, nicht war?)
Danke dafuer, auch wenn ich hier nur so mal gelesen habe