sceneggiatura mio Python (per todo list) viene avviato dalla riga di comando in questo modo:Come gestite le opzioni che non possono essere utilizzate insieme (usando OptionParser)?
todo [options] <command> [command-options]
Alcune opzioni non possono essere utilizzate insieme, per esempio
todo add --pos=3 --end "Ask Stackoverflow"
sarebbe specificare sia la terza posizione e la fine della lista. Allo stesso modo
todo list --brief --informative
confonderebbe il mio programma di essere breve o informativo. Dal momento che voglio avere un controllo piuttosto potente, casi come questi saranno un mucchio e ne sorgeranno sicuramente di nuovi in futuro. Se un utente passa una brutta combinazione di opzioni, voglio dare un messaggio informativo, preferibilmente insieme all'aiuto all'utilizzo fornito da optparse. Attualmente lo gestisco con una dichiarazione if-else che trovo davvero brutta e povera. Il mio sogno è di avere qualcosa di simile nel mio codice:
parser.set_not_allowed(combination=["--pos", "--end"],
message="--pos and --end can not be used together")
e OptionParser lo userebbe quando analizza le opzioni.
Dal momento che questo non esiste per quanto ne so, chiedo alla comunità SO: Come gestirlo?
soluzione Terrific! – Joel
'super()' non funzionerà con Python 2.X, poiché 'OptionParser' viene creato come una classe vecchio stile. Una soluzione è fornita su [Stack Overflow question 2023940] (http://stackoverflow.com/questions/2023940/using-super-when-subclassing-python-class-that-is-not-derived-from-objectold). – gotgenes
Grazie, l'ho risolto specificando esplicitamente la superclasse. –