Skip to content

Commit 4e9cff0

Browse files
committedMay 24, 2021
Create Enumerate枚举类的使用.py
1 parent fb623bd commit 4e9cff0

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed
 
+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
#!/usr/bin/env python3
2+
3+
4+
'''
5+
枚举类的使用: Python 提供了 Enum 类来实现这个功能
6+
Enum 的成员均为单例(Singleton),并且不可实例化,不可更改
7+
'''
8+
9+
from enum import Enum
10+
11+
Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'))
12+
13+
# 遍历枚举类型: 通过 __members__ 遍历它的所有成员的方法
14+
for name, member in Month.__members__.items():
15+
16+
# member.value 是自动赋给成员的 int 类型的常量,默认是从 1 开始的
17+
print(name, '---------', member, '----------', member.value)
18+
19+
# 直接引用一个常量
20+
print('\n', Month.Jan)
21+
22+
23+
# ****** 自定义类型的枚举 ********
24+
25+
# 但有些时候我们需要控制枚举的类型,那么我们可以 Enum 派生出自定义类来满足这种需要。通过修改上面的例子:
26+
27+
Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'))
28+
29+
30+
# @unique 装饰器可以帮助我们检查保证没有重复值
31+
@unique
32+
class Month(Enum):
33+
Jan = 'January'
34+
Feb = 'February'
35+
Mar = 'March'
36+
Apr = 'April'
37+
May = 'May'
38+
Jun = 'June'
39+
Jul = 'July'
40+
Aug = 'August'
41+
Sep = 'September '
42+
Oct = 'October'
43+
Nov = 'November'
44+
Dec = 'December'
45+
46+
47+
if __name__ == '__main__':
48+
49+
print(Month.Jan, '----------',
50+
Month.Jan.name, '----------', Month.Jan.value)
51+
for name, member in Month.__members__.items():
52+
print(name, '----------', member, '----------', member.value)

0 commit comments

Comments
 (0)