2014-10-30 10 views
9

Poniższy kod Python fragment zostanie przeanalizowane przez Pylint:ukryć niektóre błędy może nie-członek pylint

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

... z powodu następującego błędu w ostatnim wierszu:

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

result zmienna jest odbierana z funkcji zewnętrznej. Jak mogę zmienić (poprawić) kod, aby Pylint rozumiał? Lub jak mogę powiedzieć, że wynik funkcji może mieć inne typy niż int? Lub jak mogę powiedzieć, aby zignorować tę konkretną linię? (Faworyzuję odpowiedź w tej kolejności pytań)

+0

Oprócz , jakie są typy, które można oczekiwać, aby mieć? (Str lub bin ..) – user3378649

+0

'tablica' i' int' wystarczą – Liviu

+0

btw, z której wersji Pythona korzystasz! Możesz użyć .tobytes() tylko z tagiem Python +3.2 – user3378649

Odpowiedz

14

Z jakiegoś powodu, pylint nie otrzymuje "wyniku" może być typu tablicowego (i będzie na pewno w gałęzi "jeśli"). W tej chwili nie można o tym powiedzieć, choć w pewnym momencie będzie to możliwe. Na razie możesz wyłączyć ostrzeżenie tylko dla tej konkretnej linii, dodając # pylint: disable=maybe-no-member po stwierdzeniu urazu lub tuż nad nim. Na przykład:

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

lub

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

Dodatkowa uwaga wyjaśniająca: dodanie określonego komentarza nad linią powoduje wyłączenie ostrzeżenia dla całego bloku (http://docs.pylint.org/faq .html # jest-to-można-lokalnie-wyłączyć-konkretny-komunikat) – Liviu

-2

Zamiast

result.tobytes(), 

użytku

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

Zmiana kodu, aby być wolniejszym, aby uczynić radość szczęśliwą nie jest w duchu ćwiczenia. Celem jest być informowanym, że kod może być ulepszony. Natrafiam na to cały czas i życzę sobie, aby pylinting dostarczał podpowiedzi typu lub używał eestrukturyzowanego tekstu lub innych strategii komentarzy do dokumentu, aby uzyskać wskazówki, ale brak tej funkcji, wyłączenie jest zdecydowanie jedynym rozwiązaniem (zakładając, że kod jest rzeczywiście czysty). – Rafe

Powiązane problemy