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.
von Aussen auf Methode in Methode zugreifen
Ja ist es... vielleicht wäre es pythonisch gewesen, das war was ich versucht habe herauszufinden.BlackJack hat geschrieben:Denn anscheinend beschreiben Deine Anforderungen wie etwas syntaktisch aus zu sehen hat. Das ist IMHO etwas merkwürdig.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
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.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:
Bei dir hat eben das Modul die Attribute ``class_a/b/c``.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
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:
Stefan
Code: Alles auswählen
def a():
def b():
return 1
return 2
print eval(a.func_code.co_consts[1])
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.