在这种情况下使用枚举是否合理?

时间:2018-12-07 05:02:00

标签: python-3.x enums

因此,我过去曾经按照命令维护配置,然后偶然发现python中的枚举。 以下是我以前做过的事情:

CONFIG = {
  "field1": {"field11": "value11", ....},
  "field2": {"field12": "value22", .....},
}

这将是全局的,并将包含我的应用程序将使用的一些配置。 然后,我使用枚举将相同的转换如下:

from enum import Enum, unique

@unique
class Config(Enum):
    field1 = {"field11": "value11", .....}
    field2 = {"field22": "value22", .....}

使用枚举的好处起初还很模糊,但是当我深入挖掘时,我发现枚举是不可变的,可以强制唯一性,并且它提供了一种遍历其成员的更简洁的方法。

我检查了是否在任何python第三方或标准库中使用了它。我发现其中大多数使用的类如下:

class Config:
    field1 = {"field11": "value11", .....}
    field2 = {"field22": "value22", .....}

所以我的问题是,枚举一个不该意外更改的配置的好选择,或者只是过分使用,可以代替使用类?

想知道哪一种被认为是最佳实践。

1 个答案:

答案 0 :(得分:0)

在问题中使用枚举的主要优点是它允许在代码中编写符号常量,而使用字典则必须检查字典中的键,例如:

Config.field1

Config["field1"]

因此,区别将是语法优势,而且枚举与字典不同,它固有地是不可变的,并且与类不同,枚举也不能扩展。