27

PEP8 情報:

models.py:10:80: E501 line too long (83 > 79 characters)

Models.py:

field = TreeForeignKey('self', null=True, blank=True, related_name='abcdefgh')

この行を正しく書く方法は?

4

6 に答える 6

29

それは「正しい」です.PEP8は79文字を超える行にフラグを立てるだけです. しかし、それが気になる場合は、次のように記述できます。

field = TreeForeignKey('self',
                       null=True,
                       blank=True,
                       related_name='abcdefgh')

またはこれ:

field = TreeForeignKey(
    'self',
    null=True,
    blank=True,
    related_name='abcdefgh',
)

または、実際には、単一の行を複数の短い行に分割する他のスタイル.

于 2013-01-03T16:53:12.660 に答える
18

autopep8 という素晴らしいプログラムを見つけました。https://github.com/hhatto/autopep8

pip install autopep8
autopep8 -i models.py

(再帰的に)行うこともできます:

autopep8 -ri package/

Auto PEP8 は、コード ロジックではなくレイアウトのみを変更して、ファイルに安全な変更を加えるだけです。

于 2013-01-03T17:09:54.690 に答える
8

バラバラに分割するのがあまり便利ではないばかげた長い文字列がある場合 (Sentry DSN、MIDDLEWARE または INSTALLED_APPS の時折のモジュールなどを考えてください)、# noqa行末に置くだけでリンターは無視しますライン。あなたが求めた場合には絶対に使用しないでください。

于 2015-10-02T14:13:11.410 に答える
5

これは非常に主観的です。E501に厳密に従っている場合は、次のように書きます。

field = TreeForeignKey('self',
                       null=True,
                       blank=True,
                       related_name='abcdefgh')

私は通常、80 ではなく 100 が長すぎると考えています。

于 2013-01-03T16:52:15.377 に答える
0

私は通常、それを分割して、元の行よりも 1 レベル深いインデントのパラメーターを並べます。次のようにします。

field = TreeForeignKey('self', null=True,
    blank=True, related_name='abcdefgh')

特にTreeForeignKeyが のようなものTreeForeignKeyWithReferencesToSomethingElseである場合、すべてのパラメーターを左括弧で並べると、すべてのパラメーターがウィンドウの右端から開始されます。いずれかのパラメーターに のような長い名前が付けられている場合、すべてをdefaultvalueforcertaincircumstances80 列未満に収めることができない場合があります。

field = TreeForeignKeyWithReferencesToSomethingElse('self',
                                                    defaultvalueforcertaincircumstances='foo')

また、複数の関数パラメーターを同じ行に配置することを好みます (正しく見えない場合を除きます。私は純粋主義者ではありません!)。私の編集者は、そうでなければ必要以上に。

于 2013-01-03T17:19:26.377 に答える
0

autopep8ファイルやプロジェクト全体の間隔の問題も解決できます。ドキュメントへのリンクは次のとおりです: https://github.com/hhatto/autopep8

  1. pip install --upgrade autopep8
  2. autopep8 --in-place --aggressive --aggressive <path_with_python_filename>
    元:autopep8 --in-place --aggressive --aggressive C://a/test.py
于 2020-04-17T11:00:10.347 に答える