###
2 オプションの定義

各々の`Option` インスタンス、は-f や--file といった同義のコマンドラインオプションからなる集合を表現しています。 一つの`Option` には任意の数のオプションを短い形式でも長い形式でも 指定できます。ただし、少なくとも一つは指定せねばなりません。

正しい方法で`Option` インスタンスを生成するには、以降の例でも示すように `make_option()` を使います。とはいえ、`make_option` や`parser.add_option()` も同じ呼び出しシグネチャを備えています:

    make_option(opt_str, ..., attr=value, ...)
    parser.add_option(opt_str, ..., attr=value, ...)

短い形式のオプション文字列を一つだけ持つようなオプションを生成するには:

    make_option("-f", attr=value, ...)

のようにします。

また、長い形式のオプション文字列を一つだけ持つようなオプションの定義は:

    make_option("--foo", attr=value, ...)

のようになります。

`attr=value` キーワード引数では、オプションの属性、すなわち `Option` オブジェクトの属性を定義しています。オプションの属性のうちでもっとも重要なのは `action` です。`action` は他のどの属性と関連があるか、そして どの属性が必要かに大きく作用します。関係のないオプション属性を指定したり、 必要な属性を指定し忘れたりすると、`optparse` は誤りを解説した `OptionError`例外を送出します。

コマンドライン上にあるオプションが見つかったときの`optparse` の 振舞いを決定しているのは アクション(action) です。 `optparse` でハードコードされているアクションには以下のような ものがあります:

`store`
  オプションの引数を保存します [デフォルトの動作です]
`store_const`
  定数を保存します
`store_true`
  真 (`True`) を保存します
`store_false`
  偽 (`False`) を保存します
`append`
  オプションの引数をリストに追加します
`count`
  カウンタを一つ増やします
`callback`
  指定された関数を呼び出します
`help`
  全てのオプションとそのドキュメントの入った使用法メッセージを出力します。

(アクションを指定しない場合、デフォルトは `store` になります。このアクション では、 `type` および `dest` オプション属性を指定せねばなりません。 下記を参照してください。)

すでにお分かりのように、ほとんどのアクションはどこかに値を保存したり、値を更新 したりします。この目的のために、`optparse` は常に `optparse.Values` の インスタンスを生成します; ユーザはこのインスタンスを options で参照 します。オプションの引数 (や、その他の様々な値) は、`dest` (保存先: destination) オプション属性に従って、optionsの属性として保存されます。

例えば、

    parser.parse_args()

を呼び出した場合、`optparse` はまず options オブジェクト を生成します:

    options = Values()

パーザ中で以下のようなオプション

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

が定義されていて、パーズしたコマンドラインに以下のいずれかが入っていた場合:

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

`optparse` は -f か --file オプションを 見つけて、

    options.filename = "foo"

と同等の処理を行います。

`type` および `dest` オプション属性は `action` と同じくらい 重要ですが、全ての オプションで意味をなすのは`action` だけなのです。