将额外的可选参数传递给回调而不破坏现有的回调

Tho*_*ith 5 python python-3.x python-3.3

我有一个接受回调的 API 方法。回调需要一个参数。

我希望此方法将第二个参数传递给接受它的回调。但是,我必须保持与仅接受原始参数的回调的兼容性。(事实上​​,我预计大多数用户不会关心附加参数,因此强迫他们明确忽略它会很烦人。)

我知道这可以使用 来完成inspect。我想知道是否有一个“惯用”或常用的解决方案,但不是那么重量级。

Chr*_*tro 5

我认为您可以使用 __code__ 来查看回调需要多少参数。

if callback.__code__.co_argcount == 2:
    callback(arg1, arg2)
else:
    callback(arg1)
Run Code Online (Sandbox Code Playgroud)

此代码未经测试,但应该可以工作。