14.3.4.1 callbackオプションの定義

callbackオプションを最も簡単に定義するには、 parser.add_option() メソッドを使います。 action の他に指定しなければならない属性は callback、 すなわちコールバックする関数自体です:

parser.add_option("-c", action="callback", callback=my_callback)

callback は関数 (または呼び出し可能オブジェクト)なので、callback オプションを定義する時にはあらかじめ my_callback() を定義しておかねば なりません。この単純なケースでは、optparse-c が 何らかの引数をとるかどうか判別できず、通常は-c が引数を 伴わないことを意味します -- 知りたいことはただ単に -c がコマンドライン上に 現れたどうかだけです。とはいえ、場合によっては、自分のコールバック関数に 任意の個数のコマンドライン引数を消費させたいこともあるでしょう。これがコールバック関数 をトリッキーなものにしています; これについてはこの節の後の方で説明します。

optparse は常に四つの引数をコールバックに渡し、その他には callback_args および callback_kwargs で指定した 追加引数しか渡しません。従って、最小のコールバック関数シグネチャは:

def my_callback(option, opt, value, parser):
のようになります。

コールバックの四つの引数については後で説明します。

callback オプションを定義する場合には、他にもいくつかオプション属性を 指定できます:

type
他で使われているのと同じ意味です: storeappend アクションの時と同じく、 この属性はoptparseに引数を一つ消費して、type に指定した 型に変換させます。optparse は変換後の値をどこかに保存する代わりに コールバック関数に渡します。
nargs
これも他で使われているのと同じ意味です: このオプションが指定されていて、 かつ nargs > 1 である場合、 optparsenargs 個の引数を消費します。このとき各引数は type 型に変換できねばなりません。変換後の値はタプルとしてコールバックに渡されます。
callback_args
その他の固定引数からなるタプルで、コールバックに渡されます。
callback_kwargs
その他のキーワード引数からなるタプルで、コールバックに渡されます。

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。