我已经编写 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
。
到目前为止,我发现这个唯一有用的地方——虽然没有我想要的那么有用——是在文档字符串中。我可以声明我的形式参数需要 Status 枚举的成员,而不是明确地说允许的值是“事件”和“非事件”(当存在更多状态时更有帮助)
所以我真的不知道它们的确切用例是什么——我不知道它们比字符串常量好在哪里。
简而言之:什么时候使用枚举?
最佳答案
几点:
- 您的
Enum
类可以将str
用作mixin。 - 一些数据库层允许将存储的数据转换为 Python 数据类型。
对于第一点:
class Status(str, Enum):
active = 'active'
inactive = 'inactive'
...
if value == Status.active:
...
对于第二点:
我在这方面经验不多,但我相信 SQLAlchemy 会做到这一点。
关于python - python 中的枚举有什么好的用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41725597/