Python 确定lambda函数中调用的方法
我有一个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 =
f = lambda x: x.method_foo()
我想将变量x
上调用的方法的名称确定为字符串。所以我想要
method_foo
保存为字符串
非常感谢您的帮助。这有点“疯狂”,但您可以使用pass a tof
获得调用函数后添加到模拟中的方法:
>>> 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是的,这只是完成任务的另一种“非正常”方式。凯文的方式肯定更像蟒蛇。