2015-01-15 9 views
8

Ich codiere in Python3 und benutze pylint, um meinen Code sauber zu halten.Wie kann man die Warnung "Keine Selbstbenutzung" deaktivieren?

Ich möchte etwas wie Interface-Klasse definieren, so dass ich mehr Funktionalität auf eine saubere und prägnante Art und Weise hinzufügen konnte, jedoch pylint kommt dieses Ziel in die Quere.

Hier ist ein Beispiel-Methode:

def on_enter(self, dummy_game, dummy_player): #pylint disable=no-self-use 
    """Defines effects when entering area.""" 
    return None 

Hier Pylint Ausgabe:

R: 70, 4: Method could be a function (no-self-use) 

Die Frage ist:

  1. Wie unterdrücke ich Warnung (man beachte die #pylint Kommentar)? oder
  2. Wie kann ich feststellen Pylint, dass dies lediglich eine Schnittstelle (man beachte die dummy_game und dummy_player

EDIT: Ausgabe von pylint --version:

pylint 1.2.1, 
astroid 1.1.1, common 0.61.0 
Python 2.7.8 (default, Oct 20 2014, 15:05:19) 
[GCC 4.9.1] 

Antwort

10

Sie sind zur Zeit diese als

ignorieren
def on_enter(self, dummy_game, dummy_player): #pylint disable=no-self-use 
    ... 

Stattdessen


einen Kommentar zu Ihrer Datei wie hinzufügen unter

# pylint: disable=R0201 

Sie die kurzen Codes Mnemotechnik, die für jede der Warnungen finden/Fehler auf documentation here:

no-self-use (R0201):

Methode könnte eine Funktion sein Wird verwendet, wenn eine Methode ihre nicht verwendet gebundene Instanz und könnte so als Funktion geschrieben werden.

Falls die gesamte Datei enthält Code für die Schnittstelle nur, können Sie diese an der Spitze setzen:

# pylint: disable=R0201 
class SomeInterface(object): 
    ... 
    ... 

Falls Sie einen anderen Code haben als auch, und wollen, dass diese für die Schnittstelle deaktivieren Klasse nur, können Sie die Prüfung erneut aktivieren wie

# pylint: disable=R0201 
class SomeInterface(object): 
    ... 
    ... 

# pylint: enable=R0201 

class AnotherClass(object): 
    ... 
    ... 
+0

Alle drei Fälle ignoriert werden durch pylint: '#pylint disable = R0201' und' #pylint disable = no-self-use' vor der Klasse und beide '#pylint disable = R0201' mit' #pylint disable = no-self-use'. Ich bevorzuge die Verwendung der vollständigen Warnung ('no-use-use') anstelle des Codes (' R0201'), weil es einfacher ist zu sehen, was unterdrückt wird. – julka

+0

@julka Ich denke, Sie könnten auf einer älteren Version von pylint sein, versuchen Sie stattdessen '# pylint: disable-msg = R0201'. FWIW, auf meinem System, wenn ich '# pylint: disable-msg = R0201' verwende, gibt es eine weitere Verwarnungswarnung. –

+0

Wieder ignoriert. Die Ausgabe von 'pylint --version' wird in Frage gestellt. – julka

12

Es stellte sich heraus, dass ich fehlte Kolon:

I verwendet
pylint disable=no-self-use
, wenn es haben sollte
gewesen pylint: disable=no-self-use

Nun, zumindest werde ich immer die neueste (und die für python3 gebaut eins) Pylint von jetzt an :)

Verwandte Themen