1

我是钩子新手,所以我需要一个建议。假设我有一个函数将一些数据作为输入并生成一个图:

def f(data, options):
   plot = produce_plot(data)
   apply_options(plot) # changing colors, style, ...
   export(plot, option.format)
   return plot

这个函数不是用户直接调用的,而是在循环内部调用的,例如:

data_categories = divide_in_category(data)
for d in data_categories: f(data, color=user_option.color, format='png')

现在,我想根据需要为用户提供使用此图进行更多操作的可能性。假设用户想要添加标签并进行一些拟合,我认为一个好主意是提供一个挂钩来访问 function 的内部f。钩子应该在export函数之前执行。问:怎么办?如何提供f挂钩内部的内部结构?

我无法使用options参数处理所有无限用例 as options.do_fit, options.add_label, ...

4

1 回答 1

0
def f(data, options, hook = None):
   plot = produce_plot(data)
   apply_options(plot) # changing colors, style, ...
   if hook is not None:
       plot = hook(plot)
   export(plot, option.format)
   return plot

然后用户可以使用他编写的函数的名称调用 f,这将在 plot 上做一些事情并返回一个新的 plot。

于 2013-03-19T13:29:34.457 回答