Мой Python скрипт (для списков списка задач) запускается из командной строки следующим образом:Как вы обрабатываете параметры, которые нельзя использовать вместе (с помощью OptionParser)?
todo [options] <command> [command-options]
Некоторые параметры не могут быть использованы вместе, например
todo add --pos=3 --end "Ask Stackoverflow"
бы определить как третью позицию и конец списка. Аналогично
todo list --brief --informative
путает мою программу о том, чтобы быть кратким или информативным. Поскольку я хочу иметь достаточно мощный контроль над параметрами, такие случаи будут кучкой, и новые, несомненно, возникнут в будущем. Если пользователи передают плохую комбинацию параметров, я хочу дать информативное сообщение, желательно вместе с помощью помощи, предоставляемой optparse. В настоящее время я обрабатываю это с помощью выражения if-else, которое я считаю очень уродливым и бедным. Моя мечта - иметь что-то вроде этого в моем коде:
и OptionParser использовали бы это при разборе параметров.
Поскольку это не существует, насколько я знаю, я спрашиваю сообщество SO: Как вы справляетесь с этим?
Потрясающе решение! – Joel
'super()' не будет работать для Python 2.X, так как 'OptionParser' создается как класс старого стиля. Решение предоставляется по [Вопрос переполнения стека 2023940] (http://stackoverflow.com/questions/2023940/using-super-when-subclassing-python-class-that-is-not-derived-from-objectold). – gotgenes
Спасибо, я исправил его, явно написав суперкласс. –