Python3中具有Enum元素的Enum

时间:2019-02-07 10:48:05

标签: python-3.x list enums

我正在我的Python代码中设置可能命令的枚举“ A”。 我还将创建另一个枚举“ B”,其中列出一些特定的命令“ A”。

因此我尝试了:

class all_commands(IntEnum):
    SET_ELEMENT_A = 0x00000001
    GET_ELEMENT_A = 0x00000007
    GET_ELEMENT_B = 0x0000000E
    SET_ELEMENT_C = 0x00000010
    GET_ELEMENT_C = 0x00000011
    GET_ELEMENT_D = 0x00000015

class getter_commands(IntEnum):
    all_commands.GET_ELEMENT_A
    all_commands.GET_ELEMENT_B
    all_commands.GET_ELEMENT_C
    all_commands.GET_ELEMENT_D

这对我来说似乎是正确的,但是当我尝试

all_commands.GET_ELEMENT_A in getter_commands

我得到一个False结果值。

这是正常行为吗?还是我的代码错了?

我尝试使用与all_commands.GET_ELEMENT_A一起使用的列表,但我认为最好使用Enum类型

getter_commands = [all_commands.GET_ELEMENT_A,
                all_commands.GET_ELEMENT_B,
                all_commands.GET_ELEMENT_C,
                all_commands.GET_ELEMENT_D]

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

devtools::install_github("GillesSanMartin/clValid")不能解决您的问题。您需要的是类似dendextend之类的东西,它允许迭代,包含检查和属性访问。所以创建的东西是这样的:

Enum

并具有以下行为:

EnumSet

这样的对象看起来像:

getter_commands =  EnumSet(
    all_commands.GET_ELEMENT_A,
    all_commands.GET_ELEMENT_B,
    all_commands.GET_ELEMENT_C,
    all_commands.GET_ELEMENT_D,
    )