Ich habe eine Variable auf Modulebene in meinem Python 2.6-Programm namens "_log", über die sich PyLint beschwert:
C0103: Invalid name "_log" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
Nachdem ich diese Antwort gelesen habe, verstehe ich, warum dies so ist: Es glaubt, dass die Variable eine Konstante ist und wendet den konstanten regulären Ausdruck an. Ich bin jedoch anderer Meinung: Ich denke, es ist eine Variable. Wie sage ich PyLint das, damit es sich nicht beschwert? Wie bestimmt PyLint, ob es sich um eine Variable oder eine Konstante handelt? Behandelt es nur alle Variablen auf Modulebene als Konstanten?
# pylint: enable-msg=C0103
danach hinzugefügt, damit der Rest des Codes noch überprüft wird.IIRC it is true that pylint interprets all module-level variables as being 'constants'.
- Warum noch haben sie nicht die Pylint machen die zu differenzierenvariable
undconstants
? Gibt es eine technische Herausforderung?Sie können auch eine durch Kommas getrennte Liste von "guten Namen" angeben, die in Ihrem Pylintrc immer zulässig sind, z.
quelle
Mir scheint, ein bisschen Refactor könnte helfen. Pylint betrachtet dies als ein Modul, daher wäre es vernünftig, nicht zu erwarten, dass Variablen auf dieser Ebene angezeigt werden. Umgekehrt beschwert es sich nicht über Vars in Klassen oder Funktionen. Das folgende Paradigma scheint ziemlich verbreitet zu sein und löst das Problem:
def main(): '''Entry point if called as an executable''' _log = MyLog() # . . . if __name__ == '__main__': main()
Dies hat den Vorteil, dass ich einige nützliche Klassen importieren kann, ohne Ihre Hauptklasse auszuführen. Der __name__ ist der des Moduls, daher schlägt das "if" fehl.
quelle
In neueren Versionen von Pylint ist diese Linie jetzt
# pylint: disable=C0103
Die Aktivierungsnachricht ist genauso einfach
# pylint: enable=C0103
quelle
Wie aus anderen Antworten hervorgeht, können Sie eine bestimmte PyLint-Warnung (z. B. C0103) deaktivieren, indem Sie die folgende Zeile einfügen:
# pylint: disable=C0103
Dies erzeugt jedoch die
Locally disabling invalid-name
Warnung. Beachten Sie, dass diese sekundäre Warnung nützlich sein kann, wenn Sie an die deaktivierte Warnung erinnert werden möchten. Wenn Sie die Warnung stillschweigend deaktivieren möchten, ohne Ihre Konfigurationsdatei zu ändern (wodurch die Warnung global deaktiviert würde), können Sie Folgendes verwenden:# pylint: disable=I0011,C0103
Beachten Sie, dass PyLint keine Warnung ausgibt, dass Sie I0011 deaktivieren!
quelle
Wenn Sie eine Nachricht lokal in Ihrer Datei deaktivieren, meldet Pylint eine weitere Warnung!
Wenn Sie einen sauberen Flusenlauf beabsichtigen und dies sicherlich das Ziel sein sollte, warum stören Sie sich dann, können Sie diese Nachricht und die entsprechende lokal aktivierte Nachricht in Ihrer Konfigurationsdatei deaktivieren:
quelle