Возьмите следующий довольно стандартный код:
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) и существует более одна пара взаимоисключающих опций.
Это элегантное решение для этого?