python面向对象高级:枚举

       在数学计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。这两种类型经常(但不总是)重叠。

枚举是一个被命名的整型常数的集合,枚举在日常生活中很常见,例如表示星期的SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY就是一个枚举。

枚举的说明与结构和联合相似,其形式为:

enum 枚举名{
    标识符①[=整型常数],
    标识符②[=整型常数],
    ...
    标识符N[=整型常数],
}枚举变量;

python用法的代码实现:

'''
1
首先,定义枚举要导入enum模块。
枚举定义用class关键字,继承Enum类。

定义枚举时,成员名称不允许重复
默认情况下,不同的成员值允许相同。但是两个相同值的成员,第二个成员的名称被视作第一个成员的别名
如果枚举中存在相同值的成员,在通过值获取枚举成员时,只能获取到第一个成员
如果要限制定义枚举时,不能定义相同值的成员。可以使用装饰器@unique【要导入unique模块】
'''
from enum import Enum

class Color(Enum):
    red = 1
    orange = 2
    yellow = 3
    green = 4
    bule = 5
    indigo = 6
    purple = 7
    kumata = 1

'''
2
'''
#通过成员值来获取成员
print(Color(7))      #Color.purple
#通过成员名称获取成员
print(Color['red'])  #Color.red

#通过成员获取他的名称和值
red_member = Color.red
print(red_member.name)   #red
print(red_member.value)  #1

'''
3 迭代器
枚举支持迭代器,可以遍历枚举成员
如果枚举有值重复的成员,循环遍历枚举时只获取值重复成员的第一个成员
如果想把值重复的成员也遍历出来,要用枚举的一个特殊属性__members__
'''
for color in Color:
    print(color)

'''输出
Color.red
Color.orange
Color.yellow
Color.green
Color.bule
Color.indigo
Color.purple
'''

for color in Color.__members__.items():
    print(color)
'''输出
('red', <Color.red: 1>)
('orange', <Color.orange: 2>)
('yellow', <Color.yellow: 3>)
('green', <Color.green: 4>)
('bule', <Color.bule: 5>)
('indigo', <Color.indigo: 6>)
('purple', <Color.purple: 7>)
('kumata', <Color.red: 1>)
'''
笔记参考:Python枚举

猜你喜欢

转载自www.cnblogs.com/kumata/p/9213342.html