zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    asp.net将word转成HTML
    asp.net 控件位置form验证
    javascript 正则表达式
    .net framework处理xml
    XMLHTTP与XMLDOC使用介绍(上)
    一个女程序员的征婚信息的select语句
    解决连接MySql4.0数据库出现的"character_set_results"问题
    javascript与cs代码互访
    杜绝<script src="js/tool.js" type="text/javascript"/>这样写的习惯
    总结:常用的正则表达式集合
  • 原文地址:https://www.cnblogs.com/lumaoxin/p/7028640.html
Copyright © 2011-2022 走看看