常量类实例是否违反了PEP8的命名约定?

3

如果我在模块级别声明一个实例,并且它只被设置一次且永不更改,那么我应该遵循PEP8中的大写命名规范吗?

例如:

entity_manager = EntityManager(config)

vs

ENTITY_MANAGER = EntityManager(config)

通常情况下,当常量是原始类型(例如整数)时,不需要讨论。但是这种情况呢?

5
不管它的值是多少,常量始终是一个常量......在Python中几乎所有东西都是类实例,这并没有什么区别。 - deceze
2
不是重复内容,但您可能会发现https://stackoverflow.com/q/46004474/7954504有用 - Brad Solomon
2个回答

5
PEP8的总体精神是“保持你的代码一致”,无论这个常量是整数、字符串还是类实例。
根据PEP8,对于在代码中不会改变的常量,请使用用下划线分隔的大写字母。这与一致性结合起来,应该应用于所有的常量,包括类实例。
关于使用大写字母

常量通常在模块级别上定义,并使用大写字母和下划线分隔单词。例如MAX_OVERFLOW和TOTAL。


0

我赞同PEP8的一般精神和保持代码一致的做法。如果您对PEP8有疑虑,请在与您的团队达成共识后更新您的.pylintrc。

关于原帖,我也同意“常量”的大写声明,无论它们是基元还是对象。但我不赞成在模块级别上使用全部大写来表示所有可能为不可变项的命名惯例,这违反了约定。由于Python没有直接强制执行此规则,我们需要定义命名约定,以便开发人员可以从您离开的地方继续工作。如果我不希望我的“常量”被另一个模块访问,我在Python中除了在名称前加下划线、小写或以某种方式混淆名称外,没有太多可以做的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接