使用Enum项目作为列表索引

Cho*_*ean 3 python enums python-3.x

我有这段代码:

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
Run Code Online (Sandbox Code Playgroud)

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

cs9*_*s95 6

您的类应该继承自IntEnum,它支持像行为这样的整数。从文档中

IntEnum可将an的成员与整数进行比较;通过扩展,还可以将不同类型的整数枚举相互比较:

from enum import IntEnum

class FileType(IntEnum):
    BASIC = 0
    BASIC_CORRUPTED = 1
    BASIC_SHITTY_END = 2
    MIMIKATZ = 3
    HASHCAT = 4
Run Code Online (Sandbox Code Playgroud)

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

data = [1, 2, 3, 4]
data[FileType.MIMIKATZ]
# 4
Run Code Online (Sandbox Code Playgroud)