6.20.3.2 オプションを定義する

Option インスタンスは、同じ意味を持つ一群のコマンドライン オプション、すなわち同じ意味と効果をもつが、つづりが異なるような オプションを表します。任意の数の短いオプションと長いオプションを 指定することができますが、少なくとも一つのオプション文字列を与え なければなりません。

短い形式のオプション文字列を一つだけもつオプションを定義するには 以下のようにします:

make_option("-f", ...)

長い形式のオプション文字列を一つだけもつオプションを定義するには 以下のようにします:

make_option("--foo", ...)

``...'' は、Option オブジェクトの属性を定義する一群の キーワード引数を表しています。ある Option に対してどのような キーワードを与えれば十分かという問題はかなり複雑です (信じられない というなら、Option の数々の _check_*() メソッド群を 調べてみてください) が、だいたい 何がしか 指定しなければ なりません。うまく指定されていなければ、optparseOptionError 例外を送出し、犯した間違いを説明してくれます。

オプションの中でもっとも重要な属性はアクション、すなわちコマンドライン 中でそのオプションが見つかったときにどうするかを決める属性です。 とりうるアクションを以下に挙げます:

store
[default] このオプションに対する引数を値として保存します。
store_const
定数値を保存します。
store_true
真を表す値を保存します。
store_false
偽を表す値を保存します。
append
このオプションに対する引数をリストに追加します。
count
カウンタを 1 増やします。
callback
指定された関数を呼び出します。
help
全てのオプションとそれに対するドキュメントを含めた、使用法メッセージ を出力します。

(アクションを指定しなければ、デフォルト値は ``store'' になります。 このアクションでは、 typedest キーワードを 与えることができます; 以下を参照してください。)

ご覧のとおり、ほとんどのアクションは何らかの値を保存したり 更新したりする処理を含んでいます。optparse はこの処理の ために、常に特定のオブジェクト(Values クラスのインスタンス) を生成します。オプション引数 (とその他数々の値) は、 make_option()/add_option() の引数 dest (目的変数) に従って、このオブジェクトの属性として保存されます。

例えば、以下の呼び出し:

parser.parse_args()

を行うと、optparse は最初に行うことの一つとして、 values オブジェクトを生成します:

values = Values()

このパーザのオプションの一つが、以下:

make_option("-f", "--file", action="store", type="string", dest="filename")

のように定義されており、解析しているコマンドライン中に以下:

-ffoo
-f foo
--file=foo
--file foo

の文字列が含まれていれば、optparse-f--file オプションを見つけた際に、以下のコード:

  values.filename = "foo"

と同じ処理を行います。 明らかに、typedest 引数は (大抵) action と ほぼ同じくらい大事なものです。 action は *全ての* オプションで 意味をなす唯一の属性ですが、最も重要な属性でもあります。

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