【发布时间】:2018-05-23 07:16:52
【问题描述】:
我正在尝试使用如下代码绑定多个属性中的多个回调函数:
for key in keys:
def callback(self, value):
#Do stuff...
return None
doSomething(callback)
之所以可行,是因为调用代码(即调用 callback)希望完全两个参数,而 callback 返回 None。现在的问题是我想包装回调,这样我也可以通过 key 类似的方式:
for key in keys:
def wrappedCallback(self, value):
#How do I get key in here???
realCallback(self, key, value)
return None
doSomething(wrapperCallback)
但我不知道如何在 wrapperCallback 中获取密钥。我无法添加额外的默认参数,例如:
...
#This throws with "expected a function taking 2 arguments, not 3"
def wrappedCallback(self, value, key=key):
realCallback(self, key, value)
...
因为这会从调用者那里抛出一个错误(它是需要非常严格的回调的 C 代码)。我也试过functools.partial,但后来我得到expected a function, not a functools.partial
如何包装传递的回调函数以包含外部参数 key(来自 for 循环),同时保持 准确 签名的描述?
【问题讨论】:
标签: python python-3.x blender