Ich versuche, zur Laufzeit herauszufinden, wo ein Objekt instanziiert wurde, da dies eine sehr nützliche Fehlermeldung für Benutzer meiner Bibliothek bereitstellen würde.Wie kann ich herausfinden, wo ein Objekt instanziiert wurde?
Angenommen, wir den folgenden Code haben:
import mylib
obj = mylib.MyClass()
obj
wird dann auf eine Instanz einer anderen Klasse übergeben von mylib
und geht auf eine wunderbare Reise. Irgendwo entlang der Linie, verursacht obj
etwas schlechtes, und ich möchte den Benutzer darauf verweisen, wo obj
instanziiert wurde.
Ich hatte gehofft, ich könnte das inspect Modul verwenden, um herauszufinden, in welcher Datei und bei welcher Zeilennummer obj
instanziiert wurde. Leider unterstützen die inspect.getsourcefile
und inspect.getsourcelines
Instanzen nicht. Gibt es einen technischen Grund, warum dies nicht unterstützt wird?
Gibt es eine andere Möglichkeit, die gesuchten Daten zu erhalten?
ist das nicht zu kompliziert? Wenn etwas Schlimmes passiert, warum tust du nicht das, was wir alle (vermutlich) tun? Wie in: traceback importieren + try: ... außer: traceback.print_exc() – StefanNch