Возьмем следующий довольно стандартный код:
from optparse import OptionParser
opts = OptionParser()
opts.add_option('-f', action="store_true")
opts.add_option("-x", dest="x", type="int", default=1)
options, args = opts.parse_args()
Предположим, что -x
и ] -f
являются взаимоисключающими: когда явно присутствуют -x
и -f
, следует сообщить об ошибке.
Как определить, что -x
присутствует явно? Даже если это не так, options
перечисляют значение по умолчанию.
Один из способов - избежать установки значения по умолчанию, чего я не буду делать, потому что - help
красиво выводит значения по умолчанию.
Другой способ - проверить sys.argv
на наличие экземпляров -x
, что тоже немного неудобно, если есть более одного имени для -x
(то есть --long-name) и еще t иметь одну пару взаимоисключающих опций.
Есть ли для этого элегантное решение?