web-dev-qa-db-ja.com

Pylintの「間違ったぶら下げインデント」とPEP8 E121を修正する方法

次のコードを適切にインデントしようとしています:

RULES_LIST = [
    ('Name1', 1, 'Long string upto 40 chars'),
    ('Name2', 2, 'Long string upto 40 chars'),
    ('Name3', 3, 'Long string upto 40 chars'),
    ('Name4', 4, 'Long string upto 40 chars'),
    ('Name5', 5, 'Long string upto 40 chars'),
    ('Name6', 6, 'Long string upto 40 chars'),
    ('Name7', 7, 'Long string upto 40 chars'),
    ('Name8', 8, 'Long string upto 40 chars')
]

Pylintが不満を言うWrong hanging indentation.上記のコードの場合、PEP8は文句を言うE121: under-indented for hanging indent

Pylintの可能な修正は、それを次のように変更することです。

RULES_LIST = [\
    ('Name1', 1, 'Long string upto 40 chars'),
     ...
    ('Name8', 8, 'Long string upto 40 chars')]

しかし、PEP8は文句を言うE121 and E502

PEP8:1.5.7(デフォルト構成)
Pylint:1.3.0(デフォルト構成)
Python:2.7.5(OSX 10.9.3で実行)

リストは長くなる可能性があります。誰かがこれに適切なインデントを提案してくれますか?

31
Jatin Kumar

4つのスペースの代わりにタブを使用しています。

タブの代わりに4つのスペースを使用する場合、これら3つの可能性は正しいです。

RULES_LIST = [('Name1', 1, 'Long string upto 40 chars'),
              ('Name2', 2, 'Long string upto 40 chars'),
              ('Name3', 3, 'Long string upto 40 chars'),
              ('Name4', 4, 'Long string upto 40 chars'),
              ('Name5', 5, 'Long string upto 40 chars'),
              ('Name6', 6, 'Long string upto 40 chars'),
              ('Name7', 7, 'Long string upto 40 chars'),
              ('Name8', 8, 'Long string upto 40 chars')]

RULES_LIST = [
    ('Name1', 1, 'Long string upto 40 chars'),
    ('Name2', 2, 'Long string upto 40 chars'),
    ('Name3', 3, 'Long string upto 40 chars'),
    ('Name4', 4, 'Long string upto 40 chars'),
    ('Name5', 5, 'Long string upto 40 chars'),
    ('Name6', 6, 'Long string upto 40 chars'),
    ('Name7', 7, 'Long string upto 40 chars'),
    ('Name8', 8, 'Long string upto 40 chars')]

RULES_LIST = [
    ('Name1', 1, 'Long string upto 40 chars'),
    ('Name2', 2, 'Long string upto 40 chars'),
    ('Name3', 3, 'Long string upto 40 chars'),
    ('Name4', 4, 'Long string upto 40 chars'),
    ('Name5', 5, 'Long string upto 40 chars'),
    ('Name6', 6, 'Long string upto 40 chars'),
    ('Name7', 7, 'Long string upto 40 chars'),
    ('Name8', 8, 'Long string upto 40 chars')
]
10
Julien Palard

引き続きタブを使用する場合は、.pylintrcファイルの次の設定を変更できます。

indent-string='\t'
indent-after-paren=1

最初のものだけを変更すると、pylintはインデントに4つのタブが使用されることを期待します。

8
James Brierley