在 Python 中将枚举转换为整数

在 Python 中将枚举转换为整数

Convert an Enum to an Integer in Python

使用模块中的IntEnumenum在 Python 中将枚举转换为整数。auto()如果确切值不重要,则可以使用该类。要获取枚举成员的值,请使用该value成员的属性。

主程序
from enum import IntEnum class Sizes(IntEnum): SMALL = 1 MEDIUM = 2 LARGE = 3 print(Sizes(1)) # 👉️ Sizes.SMALL print(Sizes.SMALL.name) # 👉️ SMALL print(Sizes.SMALL.value) # 👉️ 1

Sizes(1)语法允许我们将整数传递给类并获取相应的枚举成员。

当您事先不知道枚举成员的名称时(因为它是从文件中读取或从 API 中获取的),这很有用。

auto()如果枚举成员的确切值不重要,您也可以使用该类。

主程序
from enum import IntEnum, auto class Sizes(IntEnum): SMALL = auto() MEDIUM = auto() LARGE = auto() # 👇️ [<Sizes.SMALL: 1>, <Sizes.MEDIUM: 2>, <Sizes.LARGE: 3>] print(list(Sizes)) print(Sizes.SMALL.name) # 👉️ SMALL print(Sizes.SMALL.value) # 👉️ 1

默认情况下,使用
auto类时的初始值从
1.

如果必须将枚举的成员与整数进行比较,则从 IntEnum类扩展
很有用。

主程序
from enum import IntEnum class Sizes(IntEnum): SMALL = 1 MEDIUM = 2 LARGE = 3 print(Sizes.SMALL == 1) # 👉️ True print(Sizes.MEDIUM == 2) # 👉️ True

或者,您可以使用模块中更通用Enum的类enum

主程序
from enum import Enum class Sizes(Enum): SMALL = 1 MEDIUM = 2 LARGE = 3 print(Sizes(1)) # 👉️ Sizes.SMALL print(Sizes.SMALL.name) # 👉️ SMALL print(Sizes.SMALL.value) # 👉️ 1

您还可以使用方括号以
编程方式访问枚举成员

主程序
from enum import Enum class Sizes(Enum): SMALL = 1 MEDIUM = 2 LARGE = 3 name = 'MEDIUM' print(Sizes[name].value) # 👉️ 2 print(Sizes['SMALL'].value) # 👉️ 1

for如果需要遍历枚举,可以使用简单循环。

主程序
from enum import Enum class Sizes(Enum): SMALL = 1 MEDIUM = 2 LARGE = 3 for size in Sizes: print(size) print(size.name, size.value)

您可以使用列表理解来检查特定值是否在枚举中。

主程序
from enum import Enum class Sizes(Enum): SMALL = 1 MEDIUM = 2 LARGE = 3 # 👇️ check enum member type print(type(Sizes.MEDIUM)) # 👉️ <enum 'Sizes'> # 👇️ check if member belongs to Enum print(isinstance(Sizes.MEDIUM, Sizes)) # 👉️ True values = [member.value for member in Sizes] print(values) # 👉️ [1, 2, 3] if 2 in values: # 👇️ this runs print('2 is in values')

列表推导用于对每个元素执行一些操作,或者选择满足条件的元素子集。

发表评论