ho diviso il mio costruttore della classe facendolo chiamare molteplici funzioni, in questo modo:Istanza Attributo nome_attributo definito al di fuori __init__
class Wizard:
def __init__(self, argv):
self.parse_arguments(argv)
self.wave_wand() # declaration omitted
def parse_arguments(self, argv):
if self.has_correct_argument_count(argv):
self.name = argv[0]
self.magic_ability = argv[1]
else:
raise InvalidArgumentsException() # declaration omitted
# ... irrelevant functions omitted
Mentre il mio interprete felicemente eseguito il mio codice, pylint ha una lamentela:
Instance attribute attribute_name defined outside __init__
Una ricerca rapida di Google è attualmente inutile. Mantenere tutta la logica del costruttore in __init__
sembra non organizzata, e anche disattivare l'avviso di Pylint sembra un hack-ish.
Che cos'è il/Pythonic modo risolvere questo problema?
L'avviso dice solo quello che dice. Penso che violi [POLS] (http://en.wikipedia.org/wiki/Principle_of_least_astonishment) se si inizializzano le variabili di istanza di fatto all'esterno del costruttore. Prova a inline 'parse_arguments' o usa i valori di ritorno della funzione in' __init__' per inizializzare le variabili e pylint sarà felice, suppongo. – miku