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