常量类实例是PEP8命名约定的例外吗?

时间:2019-09-12 11:47:02

标签: python pep8

如果我在模块级别声明一个实例,且该实例只能设置一次且永不更改,那么我应该坚持使用PEP8中的大写命名约定吗?

例如

entity_manager = EntityManager(config)

vs

ENTITY_MANAGER = EntityManager(config)

当常量是原始类型时,通常不讨论。一个整数。但是呢?

2 个答案:

答案 0 :(得分:3)

PEP8的基本精神是“保持代码一致”,无论该常量是int,字符串还是类实例。

根据PEP8,请使用下划线分隔的大写字母表示不会在您的代码中更改的常量。再加上一致性,应在整个常量(包括类实例)中全部应用。

使用UpperCase letters时:

  

常量通常在模块级别定义,并以全部形式编写   带下划线的大写字母分隔单词。例子包括   MAX_OVERFLOW和TOTAL。

答案 1 :(得分:0)

我同意PEP8的总体精神,并保持您的代码一致。如果您在使用PEP8时遇到问题,请在与团队达成共识后更新.pylintrc。

关于原始帖子,我也同意“常量”的大写声明,无论它们是基元还是对象。我不同意的是,这违背了惯例,就是在模块级别对所有可能不变的东西使用所有大写字母。由于Python不会直接强制执行此操作,因此我们需要定义命名约定,这些约定隐含了开发人员从您离开的地方开始的目的和范围。如果我不希望从其他模块访问“常量”,那么除了用下划线前缀,小写字母或以某种方式混淆名称之外,在Python中我无能为力。