空白行Python PEP8在类定义中的最佳实践[关闭]

问题描述 投票:16回答:2

我总是在课程定义后留下一个空行,代码似乎符合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中避免这些额外的空白行吗?

python pep8
2个回答
13
投票

这真的是品味问题。我个人将空白行包含在具有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

2
投票

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

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.