如何写钩子

时间:2013-03-19 12:44:17

标签: python hook

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

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')

现在我想让用户根据需要为这个情节做更多的事情。假设用户想要添加标签并做一些拟合,我认为一个好主意是提供一个钩子来访问函数f的内部。钩子应该在export函数之前执行。问题:怎么做?如何在钩子里面提供f的内部结构?

我无法处理options参数为options.do_fitoptions.add_label的所有无限用例,...

1 个答案:

答案 0 :(得分: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,这将在绘图上执行某些操作并返回新的绘图。