さまざまな種類のデータを処理するハンドラーを作成しています。これが私の現在の解決策です:
def get_handler_by_type(type):
def handler_for_type_A:
...
#code for processing data type A
def handler_for_type_B:
...
#code for processing data type B
def handler_for_type_C:
...
#code for processing data type C
handler_map = {type_A: handler_for_type_A,
type_B: handler_for_type_B,
type_C: handler_for_type_C,
}
return handler_map(type)
ただし、get_handler_by_type を頻繁に呼び出し、呼び出されるたびにディクショナリが再構築されるため、これは非常に非効率的です。
私は代わりにこれを行うことができることを知っています:
def handler_for_type_A:
...
#code for processing data type A
def handler_for_type_B:
...
#code for processing data type B
def handler_for_type_C:
...
#code for processing data type C
handler_map = {type_A: handler_for_type_A,
type_B: handler_for_type_B,
type_C: handler_for_type_C,
}
def get_handler_by_type(type, handler_map = handler_map):
return handler_map(type)
しかし、これは私の意見ではかなり醜いです。グローバル空間を汚染している handler_for_type_Xs と handler_map があるためです。これを効率的かつエレガントに行う方法はありますか?
ご意見ありがとうございます。