Parentobjekt ermitteln?

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
HarryH
User
Beiträge: 266
Registriert: Freitag 23. Mai 2003, 09:08
Wohnort: Deutschland

Donnerstag 8. März 2007, 13:20

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!
Gruß, Harry
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Donnerstag 8. März 2007, 13:42

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

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
BlackJack

Donnerstag 8. März 2007, 14:17

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.
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Donnerstag 8. März 2007, 16:04

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?
HarryH
User
Beiträge: 266
Registriert: Freitag 23. Mai 2003, 09:08
Wohnort: Deutschland

Donnerstag 8. März 2007, 16:22

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).
Gruß, Harry
BlackJack

Donnerstag 8. März 2007, 16:25

War auf den OP bezogen. Was jens geschrieben hat, ist ja ziemlich eindeutig Debugging-Code.

@HarryH: Wozu brauchst Du das denn?
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

Freitag 9. März 2007, 16:55

hilft dir hier evtl. was weiter ...

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