Seite 1 von 1

Parentobjekt ermitteln?

Verfasst: Donnerstag 8. März 2007, 13:20
von HarryH
Hallo,

Wie kann ich innerhalb einer Klasse ermitteln woraus die Klasse aufgerufen wurde?
Ich weiß das ich das parentobjekt beim Aufruf mit übergeben könnte, aber ich möchte es gerne ohne spezielle Übergabe ermitteln.
Geht das?

Danke!

Verfasst: Donnerstag 8. März 2007, 13:42
von jens
Ich weiß auch nicht wie ;)

Ich nutzte aber für Debugging Zwecke für sowas inspect.stack() um heraus zu feinden von wo aus etwas aufgerufen wurde:

Code: Alles auswählen

        for stack_frame in inspect.stack():
            # Im stack vorwärts gehen, bis außerhalb dieser Datei
            filename = stack_frame[1]
            lineno = stack_frame[2]
            if filename != __file__:
                break

        filename = "...%s" % filename[-25:]
        fileinfo = "%-25s line %3s: " % (filename, lineno)
Aber das ist bestimmt nicht das was du suchst ;)

Verfasst: Donnerstag 8. März 2007, 14:17
von BlackJack
Ist auf jeden etwas was nicht in Produktionscode gehört. Wenn sich eine Funktion bei gleichen Argumenten anders verhält je nachdem von wo sie aufgerufen wird, dann stimmt im allgemeinen etwas mit dem Entwurf nicht. Die Funktionen sind dann nicht richtig entkoppelt und ausserdem ist das ein reichlich überraschendes Verhalten für jemanden der diese Funktion benutzt.

Verfasst: Donnerstag 8. März 2007, 16:04
von sape
BlackJack hat geschrieben:Ist auf jeden etwas was nicht in Produktionscode gehört.
Warum? ``inspect.stack`` fängt doch nicht mit _ oder __ an. Ich benutze öfter viele Funktionen aus ``inspect`` :? Oder war der Satz auf den OP bezogen?

re:

Verfasst: Donnerstag 8. März 2007, 16:22
von HarryH
Vielen Dank für die Antwoten!

Ich meinte aber nicht aus welchen Pythonskript in welcher Zeile etwas aufgerufen wird, sondern von welchem Objekt aus (z.B. aus welchem Modul, Klasse, Funktion).

Verfasst: Donnerstag 8. März 2007, 16:25
von BlackJack
War auf den OP bezogen. Was jens geschrieben hat, ist ja ziemlich eindeutig Debugging-Code.

@HarryH: Wozu brauchst Du das denn?

Verfasst: Freitag 9. März 2007, 16:55
von Dill
hilft dir hier evtl. was weiter ...

http://www.python-forum.de/topic-9658.html