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



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

例如

entity_manager = EntityManager(config)

ENTITY_MANAGER = EntityManager(config)

当常量是基元类型(例如整数(时,通常不进行讨论。但是这个呢?

PEP8 的一般精神是"保持代码一致",无论该常量是 int、string 还是类实例。

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

使用大写字母时:

常量通常在模块级别定义并写入所有 大写字母,下划线分隔单词。示例包括 MAX_OVERFLOW和总计。

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

关于原始帖子,我也同意"常量"的大写声明,无论它们是原语还是对象。我不同意的,这违背了惯例,是在模块级别对所有可能不可变的东西使用所有大写字母。由于 Python 不直接强制执行这一点,因此由我们来定义命名约定,这些约定暗示了开发人员从您离开的地方继续的目的和范围。如果我不希望我的"常量"可以从另一个模块访问,那么除了带有下划线的前缀、小写或以某种方式混淆名称之外,我在 Python 中无能为力。

最新更新