Строка слишком длинная. Django PEP8
Информация о PEP8:
models.py:10:80: E501 line too long (83 > 79 characters)
Models.py:
field = TreeForeignKey('self', null=True, blank=True, related_name='abcdefgh')
Как правильно написать эту строку?
Ответы
Ответ 1
"Правильно", PEP8 просто выделяет строки длиной более 79 символов. Но если вас это беспокоит, вы можете написать это следующим образом:
field = TreeForeignKey('self',
null=True,
blank=True,
related_name='abcdefgh')
Или это:
field = TreeForeignKey(
'self',
null=True,
blank=True,
related_name='abcdefgh',
)
Или, действительно, любой другой стиль, который разбивает одну строку на несколько более коротких строк.
Ответ 2
Я нашел эту опрятную программу под названием autopep8! https://github.com/hhatto/autopep8
pip install autopep8
autopep8 -i models.py
Вы также можете сделать (рекурсивно):
autopep8 -ri package/
Авто PEP8 только делает безопасные изменения в файлах, только меняет макет, а не логику кода.
Ответ 3
Это очень субъективно. Я бы написал, если бы я строго следил за E501:
field = TreeForeignKey('self',
null=True,
blank=True,
related_name='abcdefgh')
Я обычно считаю 100 слишком длинными, а не 80.
Ответ 4
Если у вас есть какая-то смешная длинная строка, которая не очень удобна разбивать на куски (думая о таких вещах, как Sentry DSN, случайный модуль в MIDDLEWARE или INSTALLED_APPS), вы можете просто положить # noqa
в конец строки и линтры будут игнорировать линию. Используйте экономно и определенно не для случая, о котором вы просили.
Ответ 5
Я обычно разделяю это, чтобы выровнять параметры на один уровень углубления глубже, чем исходная строка, например:
field = TreeForeignKey('self', null=True,
blank=True, related_name='abcdefgh')
Особенно, если TreeForeignKey
- это что-то вроде TreeForeignKeyWithReferencesToSomethingElse
, и в этом случае все параметры будут начинаться в крайнем правом углу окна, если вы выровняете их все с открывающей скобкой. Если какой-либо из параметров имел длинное имя, например defaultvalueforcertaincircumstances
, возможно, вы не сможете вместить все это под 80 столбцами:
field = TreeForeignKeyWithReferencesToSomethingElse('self',
defaultvalueforcertaincircumstances='foo')
Я также предпочитаю размещать несколько параметров функции в одной строке (кроме случаев, когда это просто не выглядит правильно, я не пурист!), так что вертикальное пространство не слишком расширено, заставляя меня тратить больше времени прокручивая в моем редакторе, чем в противном случае.