【发布时间】:2017-01-18 17:18:04
【问题描述】:
我已经编写 Python 2 代码大约 3 年了,虽然我很早就知道枚举,但我们已经开始在我们的项目中使用它们(向后移植 - pypi 包 enum34 )。
我想了解何时使用它们。
我们开始使用它们的一个地方是将一些 postgres 数据库级枚举映射到 python 枚举。因此我们有这个枚举类
class Status(enum.Enum):
active = 'active'
inactive = 'inactive'
但是当使用这些时,我们最终会像这样使用它们:
if value == Status.active.value:
...
因此在这种情况下使用枚举比使用更简单的类(像这样)没有帮助
class Status(object):
active = 'active'
inactive = 'inactive'
因为我们可以更轻松地使用它,例如 value == Status.active。
到目前为止,我发现这个有用的唯一地方 - 虽然没有我想要的那么有用 - 是在文档字符串中。与其明确说允许的值是“活动”和“不活动”,我可以声明我的形式参数需要一个状态枚举的成员(当存在更多状态时更有帮助)
所以我真的不知道它们的确切用例是什么 - 我不知道它们比字符串常量更好。
简而言之:什么时候使用枚举?
【问题讨论】:
-
如果你选择字符串,你的 DocString 也可以说“必须是类
Status中定义的常量之一”。