Ich möchte einen Lambda-Ausdruck "nach innen schauen", ohne ihn zu bewerten. einen Ausdruck wie der hier gegebenenIntrospektion von Lambda-Ausdrücken
(lambda something: something.x > something.y)
ich die Elemente zugreifen möchten, die außerhalb des lambda
zugegriffen werden. (Dh eine Liste mit Verweisen auf something.x
und something.y
zurückzukehren.
Doch wie meine Ausdrücke können Nebenwirkungen haben, (lambda self: self.set_value(15)
) Ich möchte, dies zu tun, ohne den Ausdruck tatsächlich aufgerufen wird. Führt zum Erlöschen dieser Anforderung die Möglichkeit __getattr__
außer Kraft zu setzen in das Objekt, das in die lambda
geben wird
kurzes Beispiel:.
l = (lambda something: something.x > something.y)
something = Something()
elements = l.get_accessed_elements(something)
# elements is a list where
# elements[0] points to something.x, and
# elements[1] points to something.y
ich schaute in den Körper selbst Parsen, aber ich würde eine Schnur Magie Zugriff haben, um den Quellcode und tun, um die Quelle zu reinigen -li nes (gesammelt über inspect
).
ich wirklich verstehe nicht, was du zu tun versuchst. Kannst du ein konkretes Beispiel erklären? –
Möchten Sie herausfinden, dass auf 'x' und' y' von dem Objekt zugegriffen wird, das als 'something' bezeichnet wird, ohne den Code für die Lambda-Funktion zu haben? Wenn ja, könnten Sie versuchen, die '__getattr__' Methode in der Definition der Klasse zu überschreiben, von der' irgendwas' eine Instanz ist. – inspectorG4dget
'Lambda etwas: Druck (etwas) oder etwas.x> etwas.j' –