Python 确定lambda函数中调用的方法

Python 确定lambda函数中调用的方法,python,python-2.7,lambda,Python,Python 2.7,Lambda,我有一个lambda函数,它被传递给一个对象并作为变量存储: f = lambda x: x.method_foo() 我想将变量x上调用的方法的名称确定为字符串。所以我想要 method_foo 保存为字符串 非常感谢您的帮助。这有点“疯狂”,但您可以使用pass a tof获得调用函数后添加到模拟中的方法: >>> from mock import Mock >>> f = lambda x: x.method_foo >>> m =

我有一个lambda函数,它被传递给一个对象并作为变量存储:

f = lambda x: x.method_foo()
我想将变量
x
上调用的方法的名称确定为字符串。所以我想要

method_foo
保存为字符串

非常感谢您的帮助。

这有点“疯狂”,但您可以使用pass a to
f
获得调用函数后添加到模拟中的方法:

>>> from mock import Mock
>>> f = lambda x: x.method_foo
>>> m = Mock()
>>> old_methods = dir(m)
>>> f(m)
<Mock name='mock.method_foo' id='4517582608'>
>>> new_methods = dir(m)
>>> next(method for method in new_methods if method not in old_methods)
'method_foo'
来自模拟导入模拟的
>>
>>>f=λx:x.方法
>>>m=Mock()
>>>旧方法=dir(m)
>>>f(m)
>>>新方法=dir(m)
>>>下一步(如果方法不在旧方法中,则新方法中方法的方法)
“方法_foo”

您可以使用
func\u code
访问lambda的代码对象,并使用
co\u name
访问代码的本地名称

>>> f = lambda x: x.method_foo
>>> f.func_code.co_names
('method_foo',)
>>> f.func_code.co_names[0]
'method_foo'

你想做什么还不是很清楚。请你解释一下好吗。这正是我想要的。我不知道它是怎么工作的though@Josh是的,这只是完成任务的另一种“非正常”方式。凯文的方式肯定更像蟒蛇。