Python 布尔变量枚举

Python Enum for Boolean variable

我正在使用 class enum.Enum 来创建一个包含 selected 成员的变量。

主要是为了让我团队中的其他开发人员能够通过select使用变量的几个允许成员之一来使用相同的约定。

我想以同样的方式创建一个布尔变量,使其他开发人员能够 select True 或 False。

是否可以定义一个将接收 True False 选项的枚举?有没有更好的选择?

以下选项不起作用:

boolean_enum = Enum('boolean_enum', 'True False')

boolean_enum = Enum('boolean_enum', True False)

boolean_enum = Enum('boolean_enum', [('True', True), ('False', False)])

查看此 API 的文档:https://docs.python.org/3/library/enum.html#functional-api

如果您只为 names 参数指定 'True False',它们将被分配自动枚举值 (1,2),这不是您想要的。 当然,您不能只发送 True False 而不是 names 参数的字符串参数。

所以你想要的是允许你指定名称和值的选项之一,例如上面的。

编辑:
如上定义时,boolean_enum.True 无法访问枚举元素(但 boolean_enum['True']boolean_enum(True) 可以访问它们)。
为避免此问题,可以更改字段名称并将其定义为

Enum('boolean_enum', [('TRUE', True), ('FALSE', False)])

然后访问为 boolean_enum.TRUEboolean_enum['TRUE']boolean_enum(True)

如今(python 3.6+)使用 enum.Flag:

可以更方便地实现这一点
from enum import Flag

class Boolean(Flag):
    TRUE = True
    FALSE = False

enum.Flag 优于 enum.Enum 的一个额外好处是它从一开始就支持(并在其下关闭)位运算符 (&,|,~):

>>> Boolean.TRUE & Boolean.FALSE
Boolean.FALSE
>>> Boolean.TRUE | Boolean.FALSE
Boolean.TRUE
>>> ~Boolean.FALSE
Boolean.TRUE

有关详细信息,请参阅 https://docs.python.org/3/library/enum.html#enum.Flag