Python中的枚举

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python中的枚举相关的知识,希望对你有一定的参考价值。

在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中的枚举的主要内容,如果未能解决你的问题,请参考以下文章

C/C++ 中enum枚举量的介绍:介绍enum枚举量在C/C中的作用和使用方法

我应该如何最好地模拟和/或避免 Python 中的枚举? [复制]

Python代码阅读(第13篇):检测列表中的元素是否都一样

Java中枚举的写法和用法

在PaddlePaddle中的Notebook代码片段

[python] Python枚举模块enum总结