Hallo,
ist es in Python (3) möglich in einer Funktion oder Methode festzustellen wer bzw, von wo aus diese Funktion oder Methode aufgerufen wurde ?
Beste Grüße
tom
Aufrufer einer Funktion festellen ?
@tomZ: schon mal einen Blick in das Modul "traceback" geworfen?
_______________________________________________________________________________
https://www.python-kurs.eu/index.php
https://learnxinyminutes.com/docs/python/ https://learnxinyminutes.com/docs/de-de/python-de/
https://quickref.me/python https://docs.python-guide.org/
- pillmuncher
- User
- Beiträge: 1527
- Registriert: Samstag 21. März 2009, 22:59
- Wohnort: Pfaffenwinkel
grubenfox: Bitte keine Footguns verteilen.
In specifications, Murphy's Law supersedes Ohm's.
@tomZ: Tracebacks sind nur für's Debugging oder Logging, da das ja automatisch funktioniert, muß man sich damit meist nicht selbst beschäftigen.
Deshalb NOCHMAL die Frage, die sparrow schon gestellt hat:
Was für ein Problem möchtest Du lösen?
Wenn Du jetzt nichts sagst, dass Du einen Debugger schreiben möchtest, dann ist die Antwort von grubenfox falsch, und Du solltest dringend näher beschreiben, was Du machen möchtest, damit wir die richtige Lösung finden.
Deshalb NOCHMAL die Frage, die sparrow schon gestellt hat:
Was für ein Problem möchtest Du lösen?
Wenn Du jetzt nichts sagst, dass Du einen Debugger schreiben möchtest, dann ist die Antwort von grubenfox falsch, und Du solltest dringend näher beschreiben, was Du machen möchtest, damit wir die richtige Lösung finden.
Hallo,
der Grund meiner Frage war dass ich eine Methode habe die öfter, als von mir angenommen, aufgerufen wird.
Meine Idee war nun, dass der schnellste Weg um herauszufinden warum dem so ist, es wäre - einfach die Methode sagen zu lassen von wem/von wo aus sie aufgerufen wurde...
Und diese gewollte Information gewann ich durch:
diese Codezeile wurde natürlich wieder entfernt, diente ja nur zum Testen des oben Beschriebenen...
Sorry, wenn ich da für etwas Verwirrung und Befürchtungen sorgte, vermutlich war das was ich beabsichtigte und wie es von mir umgesetzt wurde, relativ harmlos ?
Beste Grüße
tom
der Grund meiner Frage war dass ich eine Methode habe die öfter, als von mir angenommen, aufgerufen wird.
Meine Idee war nun, dass der schnellste Weg um herauszufinden warum dem so ist, es wäre - einfach die Methode sagen zu lassen von wem/von wo aus sie aufgerufen wurde...
Und diese gewollte Information gewann ich durch:
Code: Alles auswählen
print (traceback.StackSummary.extract(traceback.walk_stack(None)))
diese Codezeile wurde natürlich wieder entfernt, diente ja nur zum Testen des oben Beschriebenen...
Sorry, wenn ich da für etwas Verwirrung und Befürchtungen sorgte, vermutlich war das was ich beabsichtigte und wie es von mir umgesetzt wurde, relativ harmlos ?
Beste Grüße
tom
Genau, das ist Debugging und dafür ist das ja ok.
Den Aufrufer zu finden, geht über inspect:
Den Aufrufer zu finden, geht über inspect:
Code: Alles auswählen
stack = inpsect.stack()
print(f"Aufrufer: {stack[1].function} in {stack[1].filename} ({stack[1].lineno})")
Vielen Dank, so siehts gleich westentlich übersichtlicher aus
da war nur ein kleinen Tippfehler: ( inpsect statt inspect )
Hier korrigiert, falls das jemand mal benötigt:
da war nur ein kleinen Tippfehler: ( inpsect statt inspect )
Hier korrigiert, falls das jemand mal benötigt:
Code: Alles auswählen
stack = inspect.stack()
print(f"Aufrufer: {stack[1].function} in {stack[1].filename} ({stack[1].lineno})")