从父 class python 覆盖 "constants"

Overriding "constants" from parent class python

我有一个简单的继承设置如下:

class A:
    CONST_VAR = "aaa"
    # more code where CONST_VAR does not change
    # ...

class B(A):
    CONST_VAR = "bbb"
    # more code where CONST_VAR does not change
    # ...

所以在每个 class 中,CONST_VAR 确实是常数,但是它在 class 之间明显变化。 CAPITAL_CASE 是 CONST_VAR 的正确约定吗?谁能指出适当的 PEP 或任何风格指南?

是的,全部大写是常量的惯例。参见 PEP 8。在 class 中也是如此,您可以通过标准库和文档看到这一点。

这是一个enum example:

class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3

这是来自 http module 的另一个:

>>> from http import HTTPStatus
>>> HTTPStatus.NOT_FOUND
<HTTPStatus.NOT_FOUND: 404>

我相信 PEP8 建议对常量使用大写字母,但我通常将其解释为“module-level 常量”。

另一方面,这是一个 class 变量,PEP8 没有指定 class 变量的命名。

但是如果我们看Google Style Guide for Python,这里明确指出class常量也应该大写:

Global/Class Constants CAPS_WITH_UNDER

这是两个不同的常量,A.CONST_VARB.CONST_VAR。显然所有大写都是正确的。