Python中的枚举怎么实现

使用普通类直接实现枚举

Python中,枚举和我们在对象中定义的类变量时一样的,每一个类变量就是一个枚举项,访问枚举项的方式为:类名加上类变量,像下面这样:

class color():    YELLOW  = 1    RED     = 2    GREEN   = 3    PINK    = 4 # 访问枚举项print(color.YELLOW) # 1

登录后复制

虽然这样是可以解决问题的,但是并不严谨,也不怎么安全,比如:

1、枚举类中,不应该存在key相同的枚举项(类变量)

2、不允许在类外直接修改枚举项的值

立即学习“Python免费学习笔记(深入)”;

class color():    YELLOW  = 1    YELLOW  = 3   # 注意这里又将YELLOW赋值为3,会覆盖前面的1    RED     = 2    GREEN   = 3    PINK    = 4 # 访问枚举项print(color.YELLOW) # 3 # 但是可以在外部修改定义的枚举项的值,这是不应该发生的color.YELLOW = 99print(color.YELLOW) # 99

登录后复制

解决方案:使用enum模块

  enum模块是系统内置模块,可以直接使用import导入,但是在导入的时候,不建议使用import enum将enum模块中的所有数据都导入,一般使用的最多的就是enum模块中的Enum、IntEnum、unique这几项

# 导入枚举类from enum import Enum # 继承枚举类class color(Enum):    YELLOW  = 1    BEOWN   = 1     # 注意BROWN的值和YELLOW的值相同,这是允许的,此时的BROWN相当于YELLOW的别名    RED     = 2    GREEN   = 3    PINK    = 4 class color2(Enum):    YELLOW  = 1    RED     = 2    GREEN   = 3    PINK    = 4

登录后复制

使用自己定义的枚举类:

print(color.YELLOW) # color.YELLOWprint(type(color.YELLOW)) #  print(color.YELLOW.value)  # 1print(type(color.YELLOW.value)) #  print(color.YELLOW == 1)    # Falseprint(color.YELLOW.value == 1)  # Trueprint(color.YELLOW == color.YELLOW)  # Trueprint(color.YELLOW == color2.YELLOW)  # Falseprint(color.YELLOW is color2.YELLOW)  # Falseprint(color.YELLOW is color.YELLOW)  # True print(color(1))         # color.YELLOWprint(type(color(1)))   #   注意事项如下:

登录后复制

1、枚举类不能用来实例化对象

2、访问枚举类中的某一项,直接使用类名访问加上要访问的项即可,比如 color.YELLOW

3、枚举类里面定义的Key = Value,在类外部不能修改Value值,也就是说下面这个做法是错误的

color.YELLOW = 2  # Wrong, can't reassign member

登录后复制

4、枚举项可以用来比较,使用==,或者is  

5、导入Enum之后,一个枚举类中的Key和Value,Key不能相同,Value可以相,但是Value相同的各项Key都会当做别名

6、如果要枚举类中的Value只能是整型数字,那么,可以导入IntEnum,然后继承IntEnum即可,注意,此时,如果value为字符串的数字,也不会报错:

from enum import IntEnum

登录后复制

7、如果要枚举类中的key也不能相同,那么在导入Enum的同时,需要导入unique函数

from enum import Enum, unique

登录后复制

以上就是Python中的枚举怎么实现的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2236464.html

(0)
上一篇 2025年2月26日 18:30:03
下一篇 2025年2月18日 02:48:28

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Python怎么利用Turtle绘制哆啦A梦和小猪佩奇

    1.哆啦A梦 “只要把愿望系在竹竿上请求月亮女神,心愿便能达成”。我超喜欢这句话。 哆啦A梦的创造要追溯到1969年的某个截稿日,作者藤子·F·不二雄的家里突然闯进了一只小猫,虽然很快就要截稿了,但作者还是和小猫玩了起来,还替小猫挠虱子,而…

    2025年2月26日
    200
  • Python的Try和Except怎么使用

    try 块允许您测试代码块以查找错误。 except 块允许您处理错误。 finally 块允许您执行代码,无论 try 和 except 块的结果如何。 异常处理 当我们调用 Python 并发生错误或异常时,通常会停止并生成错误消息。 …

    2025年2月26日 编程技术
    200
  • 为什么 Python、Ruby 等语言弃用了自增运算符?

    许多人也许会注意到一个现象,那就是在一些现代编程语言(当然,并不是指“最近出现”的编程语言)中,自增和自减运算符被取消了。也就是说,在这些语言中不存在​​i++​​​或​​j–​​​这样的表达,而是只存在​​i += 1​​​或…

    2025年2月26日
    200
  • Python的正则表达式怎么实现

    Python 正则表达式 正则表达式本身是独立于编程语言的知识,但是它又依附于编程语言,基本上我们所使用的编程语言都提供了对它的实现,当然了,各家的实现也是有一些差异的,有的支持的功能多一点,有的支持的少一点。 因为正则表达式是实践中使用广…

    2025年2月26日
    200
  • Python中if语句的基本格式是什么

    在 python 中,if 语句用于根据条件执行不同的代码块。它的基本格式如下: if condition:    # 如果 condition 为 True,执行这里的代码块 登录后复制 其中,condition 是一个表达式,通常涉及变…

    编程技术 2025年2月26日
    200
  • Python中json库的操作方法有哪些

    概念 json是一种通用的数据类型 一般情况下接口返回的数据类型都是json 长得像字典,形式也是k-v{ } 其实json是字符串 字符串不能用key、value来取值,所以要先转换为字典才可以 立即学习“Python免费学习笔记(深入)…

    编程技术 2025年2月26日
    200
  • 怎么使用python实现一个简单的贪吃蛇游戏

    pygame 写的“贪吃蛇”小游戏: “贪吃蛇”这个小游戏在编程学习中的常客,因为: 简单,最基本的游戏元素只需要蛇和食物两个就可以进行了。(打飞机还需要三个元素呢,想想分别是什么?)方向的话只要上下左右4个固定方向就可以了。有基本的数据结…

    2025年2月26日
    200
  • Python怎么利用手势识别实现贪吃蛇游戏

    项目介绍 1、游戏的操作方式 贪吃蛇游戏人尽皆知,计算机视觉鲜为人知,计算机视觉+贪吃蛇游戏会带给人们更多的参与感以及新鲜度,本次这个项目就是主要使用手势识别来完成贪吃蛇这个简单的游戏。在这个游戏中,电脑通过摄像头捕捉到我们的手势并判别是否…

    2025年2月26日
    200
  • python OpenCV图像金字塔实例分析

    1.图像金字塔理论基础 图像金字塔是图像多尺度表达的一种,是一种以多分辨率来解释图像的有效但概念简单的结构。一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合。其通过梯次向下采样获得,直到达到某个终止条…

    2025年2月26日 编程技术
    200
  • 怎么使用python构建一个自己的聊天室

    一、网络编程基础概念 ip地址:网络中每个设备的唯一标识符,用于在网络中定位设备。 端口:标识设备上的不同网络应用,一个端口对应一个特定的服务或应用。 协议:数据通信的规则,如TCP和UDP。 二、Socket编程简介及原理 Socket是…

    编程技术 2025年2月26日
    200

发表回复

登录后才能评论