Python枚举注意事项

1.枚举下面是不能有两个相同的标签的。
2.两个标签的值一样的话,是代表的一种枚举类型,后面的标签是第一个标签的别名
3 遍历枚举不会把别名给循环处理,要把别名也遍历出来就用枚举类的__menbers__属性

枚举下面是不能有两个相同的标签的。

from enum import Enum
class Color(Enum):
    YELLOW = 1
    YELLOW = 1
    BLACK = 3
    RED = 4
print(Color.YELLOW)

--------------------------------------
输出:
Traceback (most recent call last):
  File "E:/projects/python_learn/eleven/c6.py", line 7, in <module>
    class Color(Enum):
  File "E:/projects/python_learn/eleven/c6.py", line 9, in Color
    YELLOW = 1
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\enum.py", line 92, in __setitem__
    raise TypeError('Attempted to reuse key: %r' % key)
TypeError: Attempted to reuse key: 'YELLOW'
--------------------------------------------
(存在两个相同的标签是会报错的)

两个标签的值一样的话,是代表的一种枚举类型,后面的标签是第一个标签的别名

from enum import Enum

class Color(Enum):
    YELLOW = 1
    YELLOW_ALIAS = 1
    BLACK = 3
    RED = 4
print(Color.YELLOW_ALIAS)

----------------------------------
输出:
Color.YELLOW

注意:按道理是打印出Color.YELLOW_ALIAS的,但因为它们的值相等,第二个标签就是第一个的别名,就打印出第一个标签。

–3:

遍历枚举不会把别名给循环处理,要把别名也遍历出来就用枚举类的__menbers__属性

from enum import Enum

class Color(Enum):
    YELLOW = 1
    YELLOW_ALIAS = 1
    BLACK = 3
    RED = 4

for k in Color:
    print(k)
print('----上面是打印出k,下面是打印出v----')
for v in Color.__members__.items(): # 这样得出的是元组
    print(v)

--------------------------------------------
输出:
Color.YELLOW
Color.BLACK
Color.RED
----上面是打印出k,下面是打印出v----
('YELLOW', <Color.YELLOW: 1>)
('YELLOW_ALIAS', <Color.YELLOW: 1>)
('BLACK', <Color.BLACK: 3>)
('RED', <Color.RED: 4>)

用的__menbers__属性中的items()方法打印的结果是元组,不想要这么复杂的结果可以不加items()方法。

from enum import Enum

class Color(Enum):
    YELLOW = 1
    YELLOW_ALIAS = 1
    BLACK = 3
    RED = 4

for v in Color.__members__:
    print(v)

------------------------------------------
输出:
YELLOW
YELLOW_ALIAS
BLACK
RED
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值