3.4枚举使用UPPER_CASE_WITH_UNDERSCORES吗?

时间:2014-01-26 03:04:14

标签: python python-3.x enums python-3.4

正如文档所述,枚举是一组符合唯一常量值的符号名称(成员)。 PEP8表示常量通常命名为UPPER_CASE,我应该在Python 3.4 enums中使用这种表示法吗?如果是,为什么文档中的示例使用lower_case

3 个答案:

答案 0 :(得分:8)

<强>更新

BDFL(仁慈的生活独裁者)已经发言,Enum documentation已经改变,以反映所有大写成员名称。


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

我对枚举的使用通常有以下几点:

class SomeEnum(Enum):
    ... = 1
    ... = 2
    ... = 3
globals().update(SomeEnum.__members__)

有效地将所有成员放入模块名称空间。

所以我会说你觉得哪种风格更舒服 - 但选择一种风格并保持一致。

答案 1 :(得分:7)

我认为它们不是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

底线,我认为这只是美学。我以前错了,我知道这只是我的意见。

答案 2 :(得分:4)

如果对样式有疑问,我通常会遵循标准库代码中使用的样式和官方文档中的示例。它让我不会浪费时间在任意决定上。

所以在这种情况下,我推荐小写,比如变量名。