Подтвердить что ты не робот

Строка слишком длинная. 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')

Как правильно написать эту строку?

4b9b3361

Ответ 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')

Я также предпочитаю размещать несколько параметров функции в одной строке (кроме случаев, когда это просто не выглядит правильно, я не пурист!), так что вертикальное пространство не слишком расширено, заставляя меня тратить больше времени прокручивая в моем редакторе, чем в противном случае.