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

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

正しい方法で`Option` インスタンスを生成するには、 `OptionParser` の `add_option()` を使います:

    parser.add_option(opt_str[, ...], attr=value, ...)

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

    parser.add_option("-f", attr=value, ...)

のようにします。

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

    parser.add_option("--foo", attr=value, ...)

のようになります。

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

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

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

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

すでにお分かりのように、ほとんどのアクションはどこかに値を保存したり、値を更新 したりします。 この目的のために、`optparse` は常に特別なオブジェクトを作り出し、 それは通常 `options` と呼ばれます (`optparse.Values` の インスタンスになっています)。 オプションの引数 (や、その他の様々な値) は、`dest` (保存先: destination) オプション属性に従って、optionsの属性として保存されます。

例えば、

    parser.parse_args()

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

    options = Values()

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

    parser.add_option("-f", "--file", action="store", type="string", dest="filename")

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

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

`optparse` はこのオプションを見つけて、

    options.filename = "foo"

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

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