von Aussen auf Methode in Methode zugreifen

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.
andilar
User
Beiträge: 19
Registriert: Montag 4. August 2008, 09:25
Wohnort: Braunschweig

Also ich weiß das das alles etwas verwirrend ist, aber im Grunde wurde meine Frage beantwortet.

Das ich bestimmte Sachen anders erreichen kann ist mir durch die diversen Ausführungen klar, aber es ging um die ganz bestimmte eine Art von Syntax und da diese nicht simpel zu erreichen ist, hat sich das ganze gelöst. Sorry.

Trotzdem vielen Dank für die Antworten. :)
andilar
User
Beiträge: 19
Registriert: Montag 4. August 2008, 09:25
Wohnort: Braunschweig

BlackJack hat geschrieben:Denn anscheinend beschreiben Deine Anforderungen wie etwas syntaktisch aus zu sehen hat. Das ist IMHO etwas merkwürdig.
Ja ist es... vielleicht wäre es pythonisch gewesen, das war was ich versucht habe herauszufinden.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

andilar hat geschrieben:Also OO ist mir schon im Groben geläufig, aber die Syntax sollte ja ähnlich dem class_a().class_b().class_c() sein und das geht sinnvoller Weise nicht:
Das geht deswegen nicht, weil bei dir die Instanzen der Klasse ``class_a`` kein Attribut ``class_b`` hat und die Instanz von ``class_b`` kein Attribut ``class_c`` hat.

Bei dir hat eben das Modul die Attribute ``class_a/b/c``.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Das Code-Objekt der inneren Funktion wird in der Liste der Konstanten der äußeren Funktion gespeichert - man weiß nur nicht mit Sicherheit, wo. Dazu muss man AFAIK den Bytecode der äußeren Funktion (steht ebenfalls im Code-Objekt) analysieren. In folgendem einfach Fall weiß ich den Index:

Code: Alles auswählen

def a():
    def b():
        return 1
    return 2
    
print eval(a.func_code.co_consts[1])
Stefan
Benutzeravatar
str1442
User
Beiträge: 520
Registriert: Samstag 31. Mai 2008, 21:13

Sowas meinte ich auf Seite 1 mit "tricksen". Da greift man auf Funktions Interna die afaik nur fürs Debugging (zb Modul inspect) gedacht sind. Und das man den Index des Code Objektes kennt ist auch nur so, weil hier sieht, wo die innere Funktion definiert wird. Das führt zu magic numbering und dergleichen. Das so ziemlich einzige Funktions-Interna, das ich, wenns wirklich sein müsste, benutzen würde, wäre f.func_globals - das ist noch einigermaßen kontrollierbar.
Antworten