Frage

I noticed Pylint behandelt nicht gut der Fall:

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

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

Obwohl es eine absolut gültige Fall Syntax seit python2.6

Er sagt, ich definiere foo zweimal, und nicht verstehen, die ".setter" Syntax (Gibt E1101 & E0102).

Gibt es eine Abhilfe für die, ohne den Code ändern zu müssen? Ich will nicht, um die Fehler deaktivieren, da sie für andere Orte wichtig sind.

Gibt es ein anderes Werkzeug, das ich, dass die Griffe es besser nutzen kann? Ich habe bereits Pyflakes und es verhält sich auf die gleiche Weise. PyDev des Code-Analyse scheint diesen speziellen Fall besser zu handhaben, aber es sucht nicht nach Konventionen, Refactoring und andere coole Features Pylint tut, und ich kann es von einem externen Skript nicht ausgeführt werden (oder kann ich ??)

Danke!

War es hilfreich?

Lösung

Dies ist Ticket http://www.logilab.org/ticket/51222 auf die Pylint Projekt. Überwachen sie den Status.

Andere Tipps

Wenn Sie nicht die Fehler global deaktivieren möchten, können Sie sie für diese bestimmte Zeilen deaktivieren, zum Beispiel:

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

Huh. Nervig. Und alle wichtigen Tools, die ich finden konnte (Pyflakes, Pylint, pychecker) zeigen dieses Problem. Es sieht aus wie das Problem beginnt in dem Byte-Code, aber ich kann nicht dis mir jeden Byte-Code für Objekteigenschaften zu geben, erhalten.

Es sieht aus wie Sie wäre besser dran, wenn Sie diese Syntax verwendet:

# 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)

Hier ist ein schöner Blog-Artikel auf sich. LOL-Zitat:

Getter und Setter gehören zu den traurigen Welt von Java und C ++.

Dies war als Bug in Pyflakes berichtet , und es scheint, festgelegt werden in aktuellen Stamm. Also habe ich die Antwort (jetzt) ??erraten ist: Pyflakes

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top