新たな型やアクションの追加は、optparse を拡張しようと考える 大きな、かつ明白な理由です。その他に少なくとも二つの分野がかかわって くると考えています。
一つ目の理由は簡単なものです: OptionParser は必要に応じて、 すなわちコマンドラインにエラーが生じたときはユーザがヘルプを要求 した際に sys.exit() を呼び出して役に立とうとします。 前者の場合、スクリプトをクラッシュさせてトレースバックを出力する 伝統的なやり方は受け入れがたいものです; このような応答を行うと、 ユーザはコマンドラインエラーを起こしたときにスクリプトにバグが あるのだと考えさせてしまいます。後者の場合、一般的にはヘルプを 出力した後に継続する利点はあまりありません。
この動作が目障りなら、 ``修正'' するのはさほど難しいことでは ありません。以下の実装をおこなわねばなりません。
もう一つの理由は、より複雑ですが、optparse で実装されている
コマンドライン文法をオーバライドするということです。
この場合、オプションに対するアクションと型の機構はすべて捨ておき、
sys.argv
を処理するコードを上書きします。
いずれの場合も、OptionParser をサブクラス化する必要があります;
どれくらい徹底的に書き換えたいかによって、
parse_args()、 _process_long_opt()、および
_process_short_opts() について、一つからすべてのメソッド
を上書きする必要があるでしょう。
これらは両方とも、読者の練習課題として残しておきます。 実は私は両方とも自分では書いたことがありません。というのも、 optparse のデフォルトの (自然な) 動作で十分ハッピーで いられるからです。
Happy hacking、 そしてこの言葉を忘れないでください: ルークよ、source を使え (Use the Source, Luke)。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。