Skip to content

Commit 9e16f0d

Browse files
authored
练习面向对象的高级特性的枚举
1 parent d731d82 commit 9e16f0d

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

test25.py

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#!/usr/bin/env python 3
2+
# -*- coding: utf-8 -*-
3+
4+
'练习面向对象的高级特性的枚举'
5+
6+
__author__ = 'sergiojune'
7+
from enum import Enum, unique
8+
9+
10+
# 使用枚举
11+
#
12+
Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'))
13+
# 获取每一个成员,value是自动生成的,从 1 开始
14+
for month,member in Month.__members__.items():
15+
print(month, '=>', member, member.value)
16+
17+
18+
# 可以继承枚举来实现枚举类
19+
@unique # 这个装饰器是让枚举的键固定值,并且不能相同
20+
class Weekday(Enum):
21+
# 这样就实现了枚举类
22+
Sun = 0
23+
Mon = 1
24+
Tue = 2
25+
Wed = 3
26+
Thu = 4
27+
Fri = 5
28+
Sat = 6
29+
30+
31+
# 访问枚举类的值
32+
print(Weekday.Sun)
33+
print(Weekday(1))
34+
print(Weekday['Wed'])
35+
num =4
36+
# 这个访问值
37+
print(Weekday(4).value == num)
38+
# 这个访问键
39+
print(Weekday(4) == num)
40+
for day, member in Weekday.__members__.items():
41+
print(day, '=>', member)
42+
43+
44+
# 作业:把Student的gender属性改造为枚举类型,可以避免使用字符串
45+
class Gender(Enum):
46+
Male = 0
47+
Female = 1
48+
49+
50+
class Student(object):
51+
def __init__(self, name, gender):
52+
self.name = name
53+
self.gender = gender
54+
55+
56+
# 测试:
57+
bart = Student('Bart', Gender.Male)
58+
if bart.gender == Gender.Male:
59+
print('测试通过!')
60+
else:
61+
print('测试失败!')

0 commit comments

Comments
 (0)