Adding new types and new actions are the big, obvious reasons why you might want to extend optparse. I can think of at least two other areas to play with.
First, the simple one: OptionParser tries to be helpful by calling sys.exit() when appropriate, i.e. when there's an error on the command-line or when the user requests help. In the former case, the traditional course of letting the script crash with a traceback is unacceptable; it will make users think there's a bug in your script when they make a command-line error. In the latter case, there's generally not much point in carrying on after printing a help message.
If this behaviour bothers you, it shouldn't be too hard to ``fix'' it. You'll have to
The second, much more complex, possibility is to override the
command-line syntax implemented by optparse. In this case,
you'd leave the whole machinery of option actions and types alone, but
rewrite the code that processes
sys.argv. You'll need to
subclass OptionParser in any case; depending on how radical a
rewrite you want, you'll probably need to override one or all of
parse_args(), _process_long_opt(), and
Both of these are left as an exercise for the reader. I have not tried to implement either myself, since I'm quite happy with optparse's default behaviour (naturally).
Happy hacking, and don't forget: Use the Source, Luke.
See About this document... for information on suggesting changes.