Funktionsnamen herausfinden?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
7crystal7
User
Beiträge: 46
Registriert: Freitag 26. Mai 2006, 18:50

Dienstag 6. Februar 2007, 17:12

Hallo Leute,

gibt es einen Befehl o.Ä. um den Funktions/Methodennamen auszugeben in der etwas ausgeführt wird?

Danke
Babsi
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Dienstag 6. Februar 2007, 17:15

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
7crystal7
User
Beiträge: 46
Registriert: Freitag 26. Mai 2006, 18:50

Dienstag 6. Februar 2007, 17:18

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
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Dienstag 6. Februar 2007, 18:13

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
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Dienstag 6. Februar 2007, 18:22

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.)
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Dienstag 6. Februar 2007, 18:44

Ansonsten werfe ich noch sys.settrace ein: http://paste.pocoo.org/show/930/
TUFKAB – the user formerly known as blackbird
7crystal7
User
Beiträge: 46
Registriert: Freitag 26. Mai 2006, 18:50

Donnerstag 8. Februar 2007, 11:23

danke für die vielen tips!

Lg
Babsi :D
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

Donnerstag 8. Februar 2007, 20:41

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 ;)
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
Antworten