如何获得触发回调的对象的散景回调?

How to get on a Bokeh callback which Object has triggered the callback?

我正在构建一些散景图函数,根据所提供数据的结构,这些函数将具有不同数量的 Select 小部件。

这样,我有一个名为 'filters' 的列表,其中包含每个 Select 小部件作为列表元素:

过滤器 = [Select1, Select2, ....]

我正在为这些函数中的每一个分配一个相同的回调 'update_dropdown',如下代码所示。对于最后一个过滤器,我最终为 'update_plot'.

分配了一个回调
        for f in filters[:-1]:
            f.on_change('value', update_dropdown)

        filters[-1].on_change('value', update_plot)

但是,为了使此策略有效,我需要获取哪个过滤器触发了 'update_dropdown' 函数内的 'update_dropdown' 回调,以便它相应地更新其他过滤器。有可能实现吗?

我希望是这样的:

def update_dropdown(attr, old, new, FILTER_WHO_TRIGGERED_THE_CALLBACK):
   #doing some stuff here accordingly to the variable FILTER_WHO_TRIGGERED_THE_CALLBACK

谢谢!!!!

无法直接执行 - 您必须为每个过滤器创建一个单独的回调。

类似于:

def bind_cb_obj(cb_obj, cb):
    def wrapped(attr, old, new):
        cb(cb_obj, attr, old, new)

    return wrapped

filters[-1].on_change('value', bind_cb_obj(filters[-1], update_plot))