zoukankan      html  css  js  c++  java
  • 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枚举
  • 相关阅读:
    SQLSERVER跨库访问
    Mybatis开发的几个主要事项
    jqGrid参数
    WPF 从当前层次遍历查找 子控件及父控件
    c# 获取图像像素
    异步FIFO的FPGA实现
    note5文档流
    note3css 的padding属性
    note3clip:rect('top', 'right', 'bottom', 'left')是什么意思
    怎样查看端口被占用情况
  • 原文地址:https://www.cnblogs.com/kumata/p/9213342.html
Copyright © 2011-2022 走看看