Python3 枚举类型

代码:(例子一)

# 枚举类型
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是用来检测值的重复与否的, 关键.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值