代码:(例子一)
# 枚举类型
from enum import Enum
Month = Enum("Month", ("Jan", "Feb", "Mar", "Apr", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"))
for name, value in Month.__members__.items():
print(name, value, value.value)
# 枚举类型指定对象调用
print(Month.Jan)
# 枚举类型对象名
print(Month.Jan.name)
# 枚举类型对象的值
print(Month.Jan.value)
print("************************************")
for i in range(1, len(Month) + 1):
print(Month(i), Month(i).name, Month(i).value)
print("**************************************")
for a in Month:
print(a, a.name, a.value)
运行结果:
Jan Month.Jan 1
Feb Month.Feb 2
Mar Month.Mar 3
Apr Month.Apr 4
Jun Month.Jun 5
Jul Month.Jul 6
Aug Month.Aug 7
Sep Month.Sep 8
Oct Month.Oct 9
Nov Month.Nov 10
Dec Month.Dec 11
Month.Jan
Jan
1
************************************
Month.Jan Jan 1
Month.Feb Feb 2
Month.Mar Mar 3
Month.Apr Apr 4
Month.Jun Jun 5
Month.Jul Jul 6
Month.Aug Aug 7
Month.Sep Sep 8
Month.Oct Oct 9
Month.Nov Nov 10
Month.Dec Dec 11
**************************************
Month.Jan Jan 1
Month.Feb Feb 2
Month.Mar Mar 3
Month.Apr Apr 4
Month.Jun Jun 5
Month.Jul Jul 6
Month.Aug Aug 7
Month.Sep Sep 8
Month.Oct Oct 9
Month.Nov Nov 10
Month.Dec Dec 11
[Finished in 0.0s]
结论: 枚举类型会自动增加值类型, 默认1开始递增, 枚举对象可迭代, 枚举对象中每个迭代出来的元素均是一个对象, 其有属性值和名称.
代码:(例子二)
# 继承枚举类
from enum import Enum, unique
from collections import Iterator, Iterable
@unique
class EnumExam(Enum):
name = "Oliver"
age = 18
height = 18
weight = 70
favor = "Rap"
print("EnumExam.name.name is:" + EnumExam.name.name)
print("EnumExam.height.name is :" + EnumExam.height.name)
print("EnumExam.height.value's value: " + str(EnumExam.height.value))
print("Enum is Iterable? " + str(isinstance(EnumExam, Iterable)))
print("Enum is Iterator? " + str(isinstance(EnumExam, Iterator)))
运行结果:
Traceback (most recent call last):
File "/home/oliver/Desktop/算法/enumTrain.py", line 26, in <module>
class EnumExam(Enum):
File "/usr/lib/python3.6/enum.py", line 834, in unique
(enumeration, alias_details))
ValueError: duplicate values found in <enum ‘EnumExam’>: height -> age
[Finished in 0.0s with exit code 1]
[shell_cmd: python3 -u "/home/oliver/Desktop/算法/enumTrain.py"]
运行错误, 提示发现height\age的值相同.
结论: @unique是用来检测值的重复与否的, 关键.