Domanda

I pylint notato non gestisce bene il caso di:

@property
def foo(self):
   return self._bar.foo

@foo.setter
def foo(self, foo_val):
   self._bar.foo = foo_val

Anche se è una sintassi caso perfettamente valido dal python2.6

Si dice ho definito foo due volte, e non capisce la sintassi ".setter" (Dà E1101 e E0102).

C'è una soluzione per questo, senza dover modificare il codice? Io non voglio disabilitare gli errori in quanto sono importanti per altri luoghi.

C'è qualche altro strumento che posso usare che gestisce meglio? Ho già controllato pyflakes e si comporta allo stesso modo. analisi del codice di PyDev sembra trattare questo caso specifico meglio, ma non controlla per convegni, refactoring, e altre caratteristiche fredde pylint fa, e non può essere eseguito da uno script esterno (o posso ??)

Grazie!

È stato utile?

Soluzione

Si tratta di biglietti http://www.logilab.org/ticket/51222 sulla progetto pylint. Monitorare il suo stato.

Altri suggerimenti

Se non si desidera disattivare gli errori a livello globale, è possibile disattivarli per queste linee specifiche, ad esempio:

def foo(self, foo_val): # pylint: disable-msg=E0102

Huh. Fastidioso. E tutti i principali strumenti che ho potuto trovare (pyflakes, pylint, pychecker) presentano questo problema. Sembra che il problema inizia nel codice di byte, ma non riesco a ottenere dis di darmi alcun codice byte per le proprietà degli oggetti.

Sembra che sarebbe meglio se si è utilizzato la seguente sintassi:

# Changed to longer member names to reduce pylint grousing
class HughClass(object):
    def __init__(self, init_value):
        self._hugh = init_value
    def hugh_setter(self):
        return self._hugh * 2
    def hugh_getter(self, value):
        self._hugh = value / 2
    hugh = property(hugh_getter, hugh_setter)

Ecco un bell'articolo blog su di essa. LOL-citazione:

  

getter e setter appartengono al triste   mondo di Java e C ++.

Questa è stata segnalato come un bug in pyflakes , e sembra essere fissato in tronco corrente. Quindi credo che la risposta (oggi) è:! Pyflakes

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top