ラムダ式を評価せずに "内部"を見たいと思っています。 はラムダ式のイントロスペクション
(lambda something: something.x > something.y)
私はlambda
外部からアクセスされている要素にアクセスしたい、などここでは1として式を考えます。 (Ieはsomething.x
とsomething.y
への参照を持つリストを返す。
をしかし、私の式が副作用を持つことができるよう、(lambda self: self.set_value(15)
を)私は実際に式を呼び出すことなく、これをやりたい。この要件はで__getattr__
を上書きする可能性を無効に。
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
私は身体を自分で解析するに見えたが、私は、ソースコードにアクセスして、ソースをきれいにするために、いくつかの文字列の魔法を行う必要があります:lambda
に渡されている
ショート例を対象-li nes(inspect
を介して収集)。
をあなたがしようとしていることを理解していない。あなたはそれを説明する具体的な例を挙げることができますか? –
ラムダ関数のコードを持たずに 'x'と' y'が 'something'と呼ばれるオブジェクトからアクセスされていることを知りたいですか?もしそうなら、 'something'がインスタンスであるクラスの定義で' __getattr__'メソッドをオーバーライドすることができます – inspectorG4dget
'lambda something:print(something)またはsomething.x> something.y' –