Пустая строка Python PEP8 лучшая практика в определении класса [закрыто]

Я всегда оставляю пустую строку после определения класса, и код кажется совместимым с PEP8, поскольку для этого не возникает никакого предупреждения. Я делаю это, потому что я нашел его более читаемым, чем писать все вместе.

class Area(BaseModel):

    name = models.CharField(_("Name"), max_length=30)
    slug = models.SlugField(_("Slug"), max_length=30, unique=True)

    class Meta(BaseModel.Meta):

        verbose_name = _("Area")
        verbose_name_plural = _("Areas")
        ordering = [
            "name",
        ]

однако, когда я читаю код PEP8 совместимый. Это дополнительное пространство никогда не было и этот код будет выглядеть так:

class Area(BaseModel):
    name = models.CharField(_("Name"), max_length=30)
    slug = models.SlugField(_("Slug"), max_length=30, unique=True)

    class Meta(BaseModel.Meta):
        verbose_name = _("Area")
        verbose_name_plural = _("Areas")
        ordering = [
            "name",
        ]

мой вопрос: это "плохая практика", что я делаю. Должен ли я избегать этих дополнительных пустых строк в Python?

2 ответов


это действительно вопрос вкуса. Я лично включаю пустую строку, которая будет состоять из классов, которые имеют docstring. Цитата PEP-0257:

вставьте пустую строку до и после всех документов (однострочных или многострочных), которые документируют класс-вообще говоря, методы класса отделены друг от друга одной пустой строкой и docstring должен быть смещен от первого метода пустой строкой; для симметрии поместите пустая строка между заголовком класса и docstring.

для примера:

class WithoutDocString(object):

    def __init__(self):
        pass


class WithADocString(object):

    """Summary line.

    Bla bla bla bla.
    """

    def __init__(self):
        pass

Как я понимаю раздел пустой строки PEP-8, есть некоторая свобода в этом вопросе. Пустые строки могут появляться в некоторых местах (разделяя группы связанных функций) и могут быть опущены в других местах (для группировки списка однострочных строк).

однако нет свободы в отношении пустых строк после заголовков определений. Они не должны появляться в соответствии с правилами ОПТОСОЗ-8.

ваш PEP-8 compliance checker, похоже, не проверяет это, хотя.

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

при редактировании существующего кода мой основной подход всегда заключается в том, чтобы придерживаться существующего форматирования. Но это к делу не относится. ;-)