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:

Code: Alles auswählen

>>> foo.__name__
'foo'
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 :D

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 ;)