空白行Python PEP8在类定义中的最佳实践

时间:2013-06-25 10:44:41

标签: 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 个答案:

答案 0 :(得分:13)

这真的是品味问题。我个人将空白行包含在具有docstring的类中。引用PEP-0257

  

在记录类的所有文档字符串(单行或多行)之前和之后插入一个空行 - 一般来说,类的方法通过一个空行彼此分隔,并且文档字符串需要通过空行从第一种方法偏移;对于对称性,在类标题和文档字符串之间加一个空行

举例说明:

class WithoutDocString(object):

    def __init__(self):
        pass


class WithADocString(object):

    """Summary line.

    Bla bla bla bla.
    """

    def __init__(self):
        pass

答案 1 :(得分:2)

据我了解blank line section of PEP-8,这个问题有一些自由。空白行可能出现在某些地方(分离相关功能组),在其他地方可能会被省略(以分组单行列表)。

然而,关于定义标题后的空行没有自由。它们不应出现,符合PEP-8规则。

但是,您的PEP-8合规检查程序似乎没有检查这一点。

一般情况下(不是与PEP-8相关),我觉得空白行和许多其他格式问题一样,是你习惯的问题。我所知道的没有科学研究表明哪种格式化对于无偏见的开发者最有效。而且我们大多数人都有偏见,所以即使这可能也不是很重要。

编辑现有代码时,我的主要方法始终是坚持现有的格式。但这不是重点: - )