我想「在裏面」看看lambda表達式而不對其進行評估。 給出的表達式,如這裏的一個,對Lambda表達式的反省
(lambda something: something.x > something.y)
我想以訪問所述lambda
外部訪問的元素。 (即返回與引用列表,以something.x
和something.y
。
然而,正如我的表情可以有副作用,(lambda self: self.set_value(15)
)我想這樣做,而不實際調用的表達。這要求空隙覆蓋__getattr__
的可能性簡短的例子,被傳遞到lambda
對象
:
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
我看着解析身體我自己,但我會訪問源代碼,並做一些字符串魔法清理源代碼-li (通過inspect
收集)。
我真的不明白你想做什麼。你能舉一個具體的例子來解釋它嗎? –
您是否正在尋找'x'和'y'是從稱爲'something'的對象訪問的,而不需要將代碼添加到lambda函數中?如果是這樣,你可以嘗試覆蓋'something'是一個實例類的定義中的'__getattr__'方法 – inspectorG4dget
'lambda something:print(something)或something.x> something.y' –