18

我总是在类定义之后留下一个空行,并且代码似乎符合 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 中使用这个额外的空行吗?

4

2 回答 2

15

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

在记录一个类的所有文档字符串(单行或多行)之前和之后插入一个空行——一般来说,类的方法之间用一个空行分隔,文档字符串需要从第一种方法是空行;为了对称,在类标题和 docstring 之间放置一个空行

为了显示:

class WithoutDocString(object):

    def __init__(self):
        pass


class WithADocString(object):

    """Summary line.

    Bla bla bla bla.
    """

    def __init__(self):
        pass
于 2013-06-25T10:52:42.397 回答
3

据我了解PEP-8 的空白行部分,这个问题有一些自由。空行可能出现在某些地方(分隔相关函数的组),而在其他地方可能会被省略(以对单行列表进行分组)。

但是,定义标题后的空行没有自由。它们不应该出现,符合 PEP-8 规则。

不过,您的 PEP-8 合规性检查器似乎没有检查这一点。

通常(与 PEP-8 无关),我觉得空行和许多其他格式问题一样,是您习惯的问题。据我所知,没有科学研究表明哪种格式最适合公正的开发人员。无论如何,我们大多数人都是有偏见的,所以即使这样也可能意义不大。

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

于 2013-06-25T10:56:29.213 回答