web-dev-qa-db-ja.com

Pythonコーディング規約 "ブロックの前の間違ったインデントの継続:pylintにより発見

私はpythonコードをチェックするためにpylintを使用し、この規約の問題を見つけました:

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

私は何回か改良しようとしましたが、問題はまだ存在します、誰かが助けることができますか?ありがとう!

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
21
Reed_Xia

Pylintは、そのような継続が次のインデントブロックと同じ列で始まることを望みません。また、メッセージには、正しいと見なされる列に関するヒントが含まれていることに注意してください。

30
sthenault

+前の行:

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

ただし、サイドノートとして、コードが〜40文字以内に収まるようにする要因を検討することをお勧めします。おそらく、インデントレベルが少なすぎるため、コードをリファクタリングしてネストされたブロックを減らすことができます。

2
Amber

PEP8 :「二項演算子の前後で区切るのに好ましい場所は、演算子の前ではなく演算子の後です。」

それに加えて、前の行にサインアップしてみてください。

0
feasel0

偽のタブを確認し(Sublime:Ctrl + Fで1つのスペースを入力します)、正しい数のスペースに置き換えます。私は同じ問題を抱えていましたが、PyLintが行の継続について不平を言っていましたが、実際にはエラーはタブの置き忘れによって引き起こされました。

インデントでは、PyLintはスペースのみをカウントするようで、数字が4の倍数にならない場合にこのエラーをスローします。エディターによっては、誤ったタブがすぐに表示されない場合があります。

0
david