使用枚举项作为列表索引

14

我有这段代码:

class FileType(Enum):
    BASIC = 0
    BASIC_CORRUPTED = 1
    BASIC_SHITTY_END = 2
    MIMIKATZ = 3
    HASHCAT = 4

    def __eq__(self, v):
        """
        Override == in order to make `FileType.BASIC == 0` equals to True, etc.
        """
        return self.value == v if isinstance(v, int) else self.value == v.value

我想知道如果要执行此操作,应该添加什么:random_array[FileType.MIMIKATZ]。目前,Python3告诉我:TypeError: list indices must be integers or slices, not FileType


尝试使用 random_array[FileType.MIMIKATZ.value] - phoenix
1个回答

33

你的类应该继承自 IntEnum,这样可以支持类似整数的行为。根据文档:

IntEnum 的成员可以与整数进行比较;同样地,不同类型的整数枚举也可以相互比较:

from enum import IntEnum

class FileType(IntEnum):
    BASIC = 0
    BASIC_CORRUPTED = 1
    BASIC_SHITTY_END = 2
    MIMIKATZ = 3
    HASHCAT = 4

现在您可以使用枚举常量来索引您的列表,

data = [1, 2, 3, 4]
data[FileType.MIMIKATZ]
# 4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接