我有一个第三方Python库,允许我注册稍后调用的回调函数。
虽然代码在函数中运行正常,但当我尝试传递方法失败时,回调永远不会被调用。
我无法控制第三方库(源代码不可用)。
def old_callbackFunction(param, data):
print data
class MyClass():
def callbackFunction(self, param, data):
print data
myObj = MyClass()
# old_setCallback(myObj.callbackFunction, param = "x") # this would work
setCallback(myObj.callbackFunction, param = "x") # this is never called
答案 0 :(得分:1)
包装函数的最佳方法是使用functools.partial
:
from functools import partial
setCallback(partial(myObj.callbackFunction), param="x")
你也可以使用lambda
(但你会丢失pythonistas的样式点):
setCallback(lambda param, data: myObj.callbackFunction(param, data), param="x")