3.4枚举使用UPPER_CASE_WITH_UNDERSCORES吗?

cdo*_*nts 31 python enums python-3.x python-3.4

正如文档所说,枚举是一组符合唯一量值的符号名称(成员).该PEP8说常数通常被称为UPPER_CASE,我应该使用这个符号在Python 3.4 枚举?如果是,为什么文档中的示例正在使用lower_case

Eth*_*man 14

更新

BDFL(Benevolent Dictator For Life)已经发言,并且Enum documentation已经改变以反映所有大写成员的名字.


[previous]文档中的示例是小写的,主要是因为Enum基于已使用的小写(或至少其作者所做的)之前存在的模块之一.

我对枚举的使用通常是这样的:

class SomeEnum(Enum):
    ... = 1
    ... = 2
    ... = 3
globals().update(SomeEnum.__members__)
Run Code Online (Sandbox Code Playgroud)

它有效地将所有成员放在模块名称空间中.

所以我会说任何一种风格让你觉得更舒服 - 但选择一种风格并保持一致.

  • 嗯,我不喜欢使用这样的枚举,但这只是我的意见。我想我会使用`lower_case`。感谢你的回答! (2认同)

Cod*_*all 8

我认为它们不是UPPER_CASE,因为它看起来很奇怪.由于您只能通过类访问枚举(例如my_enum.VALUE),如果成员大写,则看起来很奇怪.在C中,枚举的成员进入模块名称空间,所以当成员大写时,在使用中看起来并不奇怪(对我而言):

typedef enum {OFF, ON} lightswitch;
lightswitch bathroomLight = ON;
Run Code Online (Sandbox Code Playgroud)

但是在Python中,您可以通过您创建的枚举类访问它们,从ClassStyle名称转到ALL_CAPS看起来很奇怪.

class Lightswitch(Enum):
    OFF = 0
    ON = 1

# isn't that weird?
my_light = Lightswitch.OFF
Run Code Online (Sandbox Code Playgroud)

最重要的是,我认为这只是美学.不过我以前错了,我意识到这只是我的意见.

  • 嗯,这不比说"re.IGNORECASE"更怪异.(我一点也不觉得奇怪,但这是主观的.) (7认同)