正如文档所说,枚举是一组符号名称(成员),绑定到唯一的常量值。PEP8说常量通常被命名为,UPPER_CASE
我应该在 Python 3.4枚举中使用这个符号吗?如果是,为什么文档中的示例使用lower_case
?
问问题
12138 次
3 回答
25
更新
BDFL(终生仁慈的独裁者)已发言,并且Enum documentation
已更改以反映所有大写成员名称。
[previous] 文档中的示例是小写的,主要是因为 Enum 基于的预先存在的模块之一使用了小写(或者至少它的作者使用了小写;)。
我对 enum 的使用通常是这样的:
class SomeEnum(Enum):
... = 1
... = 2
... = 3
globals().update(SomeEnum.__members__)
它有效地将所有成员放在模块命名空间中。
所以我会说哪种风格让你感觉更舒服——但选择一种风格并保持一致。
于 2014-01-26T04:25:14.210 回答
8
我认为它们不是 UPPER_CASE 因为,好吧,它看起来很奇怪。由于您只能通过类(例如my_enum.VALUE
)访问枚举,因此如果成员大写,则看起来很奇怪。在 C 中,枚举的成员进入模块命名空间,所以当成员被大写时(对我来说)它看起来并不奇怪,在使用中:
typedef enum {OFF, ON} lightswitch;
lightswitch bathroomLight = ON;
但是在 Python 中,您通过您创建的枚举类访问它们,并且从 ClassStyle 名称转到 ALL_CAPS 看起来很奇怪。
class Lightswitch(Enum):
OFF = 0
ON = 1
# isn't that weird?
my_light = Lightswitch.OFF
归根结底,我认为这只是美学。不过,我以前错了,我意识到这只是我的意见。
于 2014-01-26T03:32:49.463 回答
4
当对样式有疑问时,我通常会参考标准库代码和官方文档中的示例中使用的样式。它使我不会在武断的决定上浪费时间。
所以在这种情况下,我建议使用小写,比如变量名。
于 2014-01-26T03:50:09.217 回答