前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python枚举类型

python枚举类型

作者头像
py3study
发布2020-01-19 11:12:17
9980
发布2020-01-19 11:12:17
举报
文章被收录于专栏:python3python3

笔记:

代码语言:javascript
复制
一:枚举类型的定义
二:枚举类和普通类的区别
    1:值不可变
    2:具有防止相同标签得功能,不同标签的值可以相同!


三:枚举类型、枚举值、枚举名称
   1:VIP.YELLOW.Value    获得标签的值
   2:VIP.BLACK.name      获取标签名称
   3:枚举里面的部分为枚举类型!

四:枚举之间的比较
    1: 支持等值比较和is, 不支持大小比较
    2: 不同枚举类之间的比较

五:枚举的注意事项
    不同标签的值相同的时候,第二种会被当做一种别名,调用时会被覆盖!
    遍历的时候不会被打印出来,解决方法是:
    for v in VIP.__members__.items():
        print(v)

六:枚举转换
    从数据库中去除某一个数值对应的值(a = 1),根据a的值匹配枚举的类型
    a = 1
    print(VIP(a))

七:其他
    1:IntEnum类型说明:枚举的都是int类型的!
    2:限制枚举类型的值不能一样

    -------23种设计模式-------实践中学习--------
    -------尝试写一些包和类库------------------
CODE:
代码语言:javascript
复制
  1 # ----------------------------------------------#
  2 # 定义一个枚举类型
  3 # ----------------------------------------------#
  4 
  5 from enum import Enum
  6 from enum import IntEnum, unique
  7 
  8 
  9 class VIP(Enum):
 10     YELLOW = 1
 11     GREEN = 2
 12     BLACK = 3
 13     RED = 4
 14 
 15 
 16 class Common:
 17     YELLOW = 2
 18 
 19 
 20 # 注意这里显示的是VIP.Black而不是3,枚举的意义重在标签而不是标签的值
 21 print(VIP.BLACK)
 22 
 23 
 24 # ----------------------------------------------------#
 25 # 枚举类和普通类的区别
 26 # 字典和普通类封装数据:   1:可变    2:没有防止相同标签得功能
 27 # ----------------------------------------------------#
 28 
 29 # VIP.GREEN = 6     # 当改变值得时候报错
 30 
 31 Common.YELLOW = 9   # 改变类变量的值
 32 print(Common.YELLOW)
 33 x = Common()           # 类的实例化
 34 print(x.YELLOW)
 35 
 36 # ----------------------------------------------#
 37 # 枚举类型、枚举值、枚举名称
 38 # ----------------------------------------------#
 39 print("Black = ", VIP.BLACK.value)  # get value of Enum
 40 
 41 print("name = ", VIP.BLACK.name)  # get value of Name,the type of name is str
 42 
 43 print(VIP.BLACK)        # 名字为枚举类型
 44 
 45 print(VIP['BLACK'])
 46 
 47 # 枚举可以被遍历
 48 for v in VIP:
 49     print(v)
 50 
 51 
 52 # ----------------------------------------------#
 53 # 枚举之间的比较,支持等值比较,不支持大小比较
 54 # ----------------------------------------------#
 55 
 56 result1 = VIP.GREEN == VIP.BLACK
 57 result2 = VIP.GREEN.value == 2    # 注意这里的结果
 58 print(result1, result2)
 59 
 60 
 61 class VIP1(Enum):
 62     YELLOW = 1
 63     GREEN = 2
 64     BLACK = 3
 65     RED = 4
 66     WRITE = 5
 67 
 68 
 69 result3 = VIP.GREEN == VIP1.GREEN
 70 print(result3)
 71 
 72 # ----------------------------------------------#
 73 # 枚举注意事项
 74 # ----------------------------------------------#
 75 
 76 
 77 class VIP2(Enum):
 78     YELLOW = 1
 79     GREEN = 1   # 别名
 80     BLACK = 3
 81     RED = 4
 82 
 83 
 84 for v in VIP2:
 85     print(v)
 86 
 87 for v in VIP2.__members__.items():
 88     print(v)
 89 
 90 for v in VIP2.__members__:
 91     print(v)
 92 
 93 # ----------------------------------------------#
 94 # 枚举转换
 95 # ----------------------------------------------#
 96 
 97 a = 1
 98 print(VIP(a))       # 可以看做是类型转换
 99 
100 # ----------------------------------------------#
101 # 枚举补充
102 # ----------------------------------------------#
103 
104 # 1:IntEnum类型说明
105 
106 
107 class VIP3(Enum):
108     YELLOW = 1
109     GREEN = "str"   # 别名
110     BLACK = 3
111     RED = 4
112 
113 
114 class VIP4(IntEnum):
115     YELLOW = 1
116     # GREEN = 'str'   # 字符串报错
117     BLACK = 3
118     RED = 4
119 
120 
121 # 2:限制枚举类型的值不能一样
122 @unique
123 class VIP6(Enum):
124     YELLOW = 1
125     GREEN = 1   # 当值相同的时候会报错!
126     BLACK = 3
127     RED = 4
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-03-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档