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

Are constant class instances an exception to PEP8 naming convention?

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

例如

entity_manager = EntityManager(config)

ENTITY_MANAGER = EntityManager(config)

当常量是基本类型时通常没有讨论,例如一个整数。但是这个呢?

PEP8 的总体精神是 "Keep your code consistent",无论该常量是 int、string 还是 class instance。

根据 PEP8,对于在您的代码中不会更改的常量,请使用大写字母并用下划线分隔。这与 一致性 相结合,应该应用于整个常量,包括 class 个实例。

关于使用 UpperCase letters:

Constants are usually defined on a module level and written in all capital letters with underscores separating words. Examples include MAX_OVERFLOW and TOTAL.

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

关于原文post,我也同意"constants,"的大写声明,不管它们是基元还是对象。我不同意并且违反惯例的是,在模块级别对可能不可变的所有内容都使用大写字母。由于 Python 不直接强制执行此操作,因此我们需要定义命名约定,以暗示开发人员从您离开的地方接手的目的和范围。如果我不希望我的 "constant" 可以从另一个模块访问,那么在 Python 中我无能为力,除了使用下划线作为前缀、小写或以某种方式混淆名称。