从父 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_VAR
和 B.CONST_VAR
。显然所有大写都是正确的。
我有一个简单的继承设置如下:
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_VAR
和 B.CONST_VAR
。显然所有大写都是正确的。