在 Python 中将枚举转换为整数
Convert an Enum to an Integer in Python
使用模块中的IntEnum
类enum
在 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')
列表推导用于对每个元素执行一些操作,或者选择满足条件的元素子集。