空行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中避免这些额外的空行吗?

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

在记录一个类的所有文档字符串(一行或多行)之前和之后插入一个空行——通常来说,类的方法由一个空线分隔,并且文档字符串需要从第一个方法偏移一个空行将;对于对称性,在类头和docstring之间放一条空行

举例说明:

class WithoutDocString(object):
    def __init__(self):
        pass

class WithADocString(object):
    """Summary line.
    Bla bla bla bla.
    """
    def __init__(self):
        pass

据我所知,PEP-8的空行部分在这个问题上有一些自由。空行可能出现在某些地方(分隔相关函数组),也可能在其他地方被省略(将一行代码列表分组)。

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

不过,您的PEP-8合规性检查器似乎没有对此进行检查。

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

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

最新更新