2014-10-30 12 views
9

Das folgende Python Fragment Code von Pylint analysiert wird:verbergen einige vielleicht-no-Mitglied Pylint Fehler

if type(result) is array.array: 
    read = result.tobytes() 

... mit dem folgenden Fehler für die letzte Zeile:

E:401,22: Instance of 'int' has no 'tobytes' member\ 
(but some types could not be inferred) (maybe-no-member) 

Die result Variable wird von einer externen Funktion empfangen. Wie kann ich den Code ändern (korrigieren), um Pylint verständlich zu machen? Oder wie kann ich sagen, dass das Ergebnis der Funktion andere Typen als int haben kann? Oder wie kann ich es sagen, diese bestimmte Linie zu ignorieren? (Ich bevorzuge eine Antwort in dieser Reihenfolge der Fragen)

+0

Neben , was sind die Typen, die Sie zu erwarten haben? (Str oder bin ..) – user3378649

+0

'Array' und' Int' sind genug – Liviu

+0

BTW, welche Version von Python benutzen Sie! Sie können .tobytes() nur mit Python verwenden +3.2 – user3378649

Antwort

14

Aus irgendeinem Grund, pylint nicht bekommen "Ergebnis" kann der Array-Typ sein (und wird sicher sein, unter dem 'if' Zweig). Es gibt derzeit keine Möglichkeit, pylint davon zu erzählen, obwohl es hoffentlich irgendwann möglich sein wird. Im Moment können Sie die Warnung nur für diese bestimmte Zeile deaktivieren, indem Sie # pylint: disable=maybe-no-member nach der fehlerhaften Anweisung oder direkt darüber hinzufügen. Zum Beispiel:

if type(result) is array.array: 
    read = result.tobytes() # pylint: disable=maybe-no-member 

oder

if type(result) is array.array: 
    # pylint: disable=maybe-no-member 
    read = result.tobytes() 
+0

Eine zusätzliche Erläuterung: Hinzufügen des angegebenen Kommentars über der Zeile deaktiviert die Warnung für den gesamten Block (http://docs.pylint.org/faq .html # is-it-possible-local-disable-a-particular-message) – Liviu

-2

Statt

result.tobytes(), 

Verwendung

getattr(result, 'tobytes')() 
+1

Das Ändern des Codes, um langsamer zu sein, um Pylint glücklich zu machen, entspricht nicht dem Geist der Übung. Das Ziel ist, informiert zu werden, kann Code besser gemacht werden. Ich stoße die ganze Zeit darauf und wünsche mir, dass pylint Typhinweis liefert oder eeStructured Text oder andere Doc-Kommentar-Strategien verwendet, um Hinweise zu bekommen. Aber abgesehen von dieser Funktion ist das Deaktivieren definitiv die einzige Lösung (vorausgesetzt, der Code ist in der Tat schon sauber). – Rafe