码迷,mamicode.com
首页 > 编程语言 > 详细

Python中的枚举

时间:2017-06-16 18:24:05      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:结构   value   通过   情况   引入   控制   port   利用   不能   

在Python中想要实现枚举功能的方式比较多,可以通过字典这一数据结构,利用键与值的对应关系,可以实现枚举的功能。

my_Enum={
red:1,
yellow:2,
blue:3
}
print(my_Enum[red])

也可以使用类来建立一个属性名与属性值之间的对应关系来实现枚举的功能,然后用.操作符来读取

class my_Enum
{
     red=1,
    yellow=2,
    blue=3       
}
my_Enum.red

但是用以上两种方式出现的问题也是很明显的:

1.枚举值可以修改

2.用类定义的话,这些枚举功能的类可以被实例化

3.枚举值是否重复无法检查

在Python3.4引入了enum模块,这个模块就是为了解决上面所说到的问题的,使用的时候首先引入模块:

import enum

enum里面提供了Enum和IntEnum等类,可以用来继承。

当然,这些类就被限制了,

1.不能被继承

2.定义之后不能在类内修改

3.枚举名称不能重复。如果有值重复的情况,那么后者的名称将会是前者的别名,其实是一个对象。

要控制枚举值不能重复,可以在枚举类之前加上@unique

对枚举类的操作:

from enum import IntEnum
class my_Enum(IntEnum):
    red=1,
    green=2,
    blue=3,
    what=3,
    yellow=9
#按名字取出枚举的值
print(my_Enum[red])
print(my_Enum[what])
#枚举的值返回枚举名字
print(my_Enum(9))
print(my_Enum[red].name)
print(my_Enum[red].value)
#可以用for in迭代
for i in my_Enum:
    print(i.name,->,i.value)

 运行结果:

my_Enum.red
my_Enum.blue
my_Enum.yellow
red
1
red -> 1
green -> 2
blue -> 3
yellow -> 9

 

Python中的枚举

标签:结构   value   通过   情况   引入   控制   port   利用   不能   

原文地址:http://www.cnblogs.com/lumaoxin/p/7028640.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!