在 Python 中获取枚举名称
How to get Enum names in Python
使用name
枚举成员的属性来获取名称,例如
Sizes.SMALL.name
. 如果只有对应的值,就把值传给枚举类,访问name
属性。
主程序
from enum import Enum class Sizes(Enum): SMALL = 1 MEDIUM = 2 LARGE = 3 print(Sizes.SMALL.name) # 👉️ SMALL # 👇️ access enum name by value print(Sizes(1).name) # 👉️ SMALL print(Sizes['SMALL'].name) # 👉️ SMALL
您可以使用枚举成员的
name
和value
属性来获取枚举的名称和值。主程序
from enum import Enum class Sizes(Enum): SMALL = 1 MEDIUM = 2 LARGE = 3 print(Sizes.MEDIUM.name) # 👉️ MEDIUM print(Sizes.MEDIUM.value) # 👉️ 2
您还可以使用方括号访问枚举成员。
主程序
from enum import Enum class Sizes(Enum): SMALL = 1 MEDIUM = 2 LARGE = 3 name = 'LARGE' print(Sizes[name].name) # 👉️ MEDIUM print(Sizes[name].value) # 👉️ 2
当您事先不知道枚举成员的名称时(因为它是从文件中读取或从 API 中获取的),这很有用。
如果您只有与枚举成员对应的值,请将其传递给枚举类并访问该name
属性。
主程序
from enum import Enum class Sizes(Enum): SMALL = 1 MEDIUM = 2 LARGE = 3 print(Sizes(1).name) # 👉️ SMALL print(Sizes(2).name) # 👉️ MEDIUM print(Sizes(3).name) # 👉️ LARGE
如果需要获取枚举中所有名称的列表,则可以使用列表理解。
主程序
from enum import Enum class Sizes(Enum): SMALL = 1 MEDIUM = 2 LARGE = 3 names = [member.name for member in Sizes] print(names) # 👉️ ['SMALL', 'MEDIUM', 'LARGE'] values = [member.value for member in Sizes] print(values) # 👉️ [1, 2, 3]
列表推导用于对每个元素执行一些操作,或者选择满足条件的元素子集。
in
如果需要检查枚举中是否存在特定名称或特定值,则可以使用运算符。
主程序
from enum import Enum class Sizes(Enum): SMALL = 1 MEDIUM = 2 LARGE = 3 names = [member.name for member in Sizes] print(names) # 👉️ ['SMALL', 'MEDIUM', 'LARGE'] if 'MEDIUM' in names: # 👇️ this runs print('MEDIUM is in enum')
in 运算符
测试成员资格。
例如,如果是 的成员,则x in l
计算为 ,否则计算为。True
x
l
False
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)