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引数を持つ無限のユースケースをすべて処理することはできません。options.do_fitoptions.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 を呼び出すことができます。これは、プロットに対して何かを実行し、新しいプロットを返します。

于 2013-03-19T13:29:34.457 に答える