我总是在类定义后留下一行空白,代码似乎符合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无关),我觉得空行和许多其他格式问题一样,都是你习惯的问题。据我所知,没有任何科学研究表明哪种格式对公正的开发人员最有效。无论如何,我们大多数人都有偏见,所以即使这样也可能意义不大。
在编辑现有代码时,我的主要方法始终是坚持现有的格式。但这与重点无关;-)