Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用函数而不是方法的Python回调_Python_Callback - Fatal编程技术网

使用函数而不是方法的Python回调

使用函数而不是方法的Python回调,python,callback,Python,Callback,我有一个第三方Python库,它允许我注册它稍后调用的回调函数 虽然代码可以处理函数,但当我尝试传递一个方法时失败了,回调永远不会被调用 我无法控制第三方库(源代码不可用) 在我的评论的帮助下,Sorin实际上自己解决了这个问题,但他表示希望我将原始评论作为答案发布。最初我不愿意发布这篇文章,因为我不确定setCallback和callbackFunction代码的确切行为;使用风险自负,并根据需要进行修改 包装函数的最佳方法是使用functools.partial: from functool

我有一个第三方Python库,它允许我注册它稍后调用的回调函数

虽然代码可以处理函数,但当我尝试传递一个方法时失败了,回调永远不会被调用

我无法控制第三方库(源代码不可用)


在我的评论的帮助下,Sorin实际上自己解决了这个问题,但他表示希望我将原始评论作为答案发布。最初我不愿意发布这篇文章,因为我不确定setCallback和callbackFunction代码的确切行为;使用风险自负,并根据需要进行修改

包装函数的最佳方法是使用
functools.partial

from functools import partial
setCallback(partial(myObj.callbackFunction), param="x")
您也可以使用
lambda
(但pythonistas会丢失样式点):


如果没有更多的信息,我想我无法给出准确的答案,但是您是否考虑过使用lambda表达式或
functools.partial
,将方法调用包装成函数?我支持@mlefroad关于调查
functools.partial
的建议。
from functools import partial
setCallback(partial(myObj.callbackFunction), param="x")
setCallback(lambda param, data: myObj.callbackFunction(param, data), param="x")