2014-12-14 15 views
19

użyłem pylint sprawdzić mojego kodu Pythona i znalazł ten problem konwencji:Python standardy kodowania „Wrong kontynuacja wcięcie przed blokiem: znaleźć pylint

C:11, 0: Wrong continued indentation before block. 
        + this_time <= self.max): 
        ^ | (bad-continuation) 

starałem się dopracować do czasów, ale problem nadal występuje może ktoś pomóc Dzięki

if len(remaining_obj_list) > 0: 
    for i in a_list: 
     this_time = self.__get_time(i) 
     for remaining_obj in remaining_obj_list: 
      if (remaining_obj.get_time() # to fit 78 char rule 
       + this_time <= self.max): 
       i.append(remaining_obj) 
       remaining_obj.set_used(True) 
     if 0 == len(self.__get_unused_list): 
      break 

Odpowiedz

25

Pylint nie chce, aby kontynuacja taka rozpoczęła się w tej samej kolumnie, co następny blok wcięcia. Zauważ też, że wiadomość zawiera wskazówkę dotyczącą kolumn, które uważa za poprawne.

+13

Nigdy nie zdawałem sobie sprawy, że pionowy pasek jest pozycją wskazującą, gdzie chce wcięcia być. – DreadPirateShawn

3

Spróbuj oddanie + na poprzedniej linii:?!

 if (remaining_obj.get_time() + 
      this_time <= self.max): 

Na marginesie, warto rozważyć czynniki, które powodują, że twój kod musi mieścić się w ~ 40 znakach - być może masz kilka zbyt wielu poziomów wcięć, a twój kod może zostać refaktoryzowany, aby mieć mniej zagnieżdżonych bloków.

2

Zgodnie z PEP8: "Preferowanym miejscem do rozbicia binarnego operatora jest operator, a nie przed nim."

Spróbuj przenieść to i zarejestruj się do poprzedniego wiersza.

+8

PEP8 zmienił to zalecenie, preferowanym sposobem jest teraz rozbicie * przed * operatorem. – flornquake

+0

Ta odpowiedź powinna być edytowana, ponieważ wyświetla błędne informacje – winklerrr

+0

@flornquake * Ewwwww *. (Właściwie to nie jestem pewien, który jest "lepszy", albo może być bardziej estetyczny lub czytelny w zależności od scenariusza ...) –