导入方式
import enum
创建枚举
class BugCode(enum.Enum):
new = 7
incomplete = 6
invalid = 5
wont_fix = 4
迭代枚举
for code in BugCode:
print(f'code_name:{code.name} , code_value:{code.value}')
---------------------------result----------------------------------
code_name:new , code_value:7
code_name:incomplete , code_value:6
code_name:invalid , code_value:5
code_name:wont_fix , code_value:4
for bugcode in BugCode.__members__.items():
print(f'枚举名:{bugcode[0]} 枚举值:{bugcode[1].value}')
----------------------------------------------------------枚举名:new 枚举值:7
枚举名:incomplete 枚举值:6
枚举名:invalid 枚举值:5
枚举名:wont_fix 枚举值:4
枚举比较
new_code = BugCode.new
invalid_code = BugCode.invalid
print('equality', new_code == invalid_code, new_code == BugCode.new)
print('identity', new_code is invalid_code, new_code is BugCode.new)
print('排序')
try:
print('\n'.join(' ' + s.name for s in sorted(BugCode)))
except TypeError as err:
print(f'cannot sort:{err}')
-----------------------------result---------------------------------
equality False True
identity False True
排序
cannot sort:'<' not supported between instances of 'BugCode' and 'BugCode'
创建int枚举
class BugCode(enum.IntEnum):
new = 7
incomplete = 6
invalid = 5
wont_fix = 4
print('\n'.join(' ' + s.name for s in sorted(BugCodeInt)))
-----------------------------result---------------------------------
wont_fix
invalid
incomplete
new
唯一枚举值
@enum.unique
class BugCodeUnique(enum.Enum):
new = 7
incomplete = 6
invalid = 5
wont_fix = 4
----------this is wrong-----------
old = 7
wrong = 4
- 相同值的Enum成员会被处理为同一个成员对象的别名引用
- new is old True
- wont_fix is wrong True
通过编程创建枚举
- 传递单个字符串时会按照空白符和逗号拆分
BugCodeProcess = enum.Enum(
value='BugCodeProcess',
names=(
'new old invalid wrong incomplete'
),
)
for code in BugCodeProcess:
print(f'code_name:{code.name} , code_value:{code.value}')
-----------------------------result---------------------------------
code_name:new , code_value:1
code_name:old , code_value:2
code_name:invalid , code_value:3
code_name:wrong , code_value:4
code_name:incomplete , code_value:5
- 按照列表传参
BugCodeProcess = enum.Enum(
value='BugCodeProcess',
names=[
('new', 7),
('old', 6),
('invalid', 5),
('wrong', 4),
('incomplete', 3)
]
)
-----------------------------result---------------------------------
code_name:new , code_value:7
code_name:old , code_value:6
code_name:invalid , code_value:5
code_name:wrong , code_value:4
code_name:incomplete , code_value:3