Python 枚举类型详解

Python 枚举类型详解

  • 什么是枚举类型?
  • 枚举类型用法
    • 定义枚举类型
    • 访问枚举成员
    • 枚举的比较
    • 枚举迭代
  • 枚举的特殊用法
    • 自动赋值
    • 枚举中的别名
  • 枚举应用场景
    • 状态机
    • 配置选项
    • 标志操作

什么是枚举类型?

枚举Enumeration)是一种数据类型,它的每个值都代表一个常量。这些常量通常用于表示一组相对固定的选项。与其他编程语言类似,Python 的枚举类型定义了一组唯一的、可命名的常量,便于使用和管理。

枚举类型用法

定义枚举类型

可以使用内置的 enum 模块来定义枚举类型。导入 Enum 基类,然后定义一个继承自 Enum 的类,每个成员代表一个枚举常量。

from enum import Enumclass Color(Enum):RED = 1GREEN = 2BLUE = 3

访问枚举成员

print(Color.RED)         # 输出:Color.RED
print(Color.RED.name)    # 输出:RED
print(Color.RED.value)   # 输出:1

枚举的比较

if Color.RED == Color.RED:print("它们相等")

枚举迭代

for color in Color:print(color)

枚举的特殊用法

自动赋值

from enum import Enum, autoclass Color(Enum):RED = auto()GREEN = auto()BLUE = auto()

枚举中的别名

Python 会自动为 RED, GREEN, BLUE 分配值,通常从 1 开始递增。

class Status(Enum):SUCCESS = 1FAILURE = 2DONE = 1

这里 SUCCESS 和 DONE 都有相同的值 1,它们是别名。通过 Status.SUCCESS is Status.DONE 会返回 True。

枚举应用场景

状态机

枚举常用于表示状态机中的各个状态。假设你有一个简单的订单系统,每个订单可以有不同的状态:

class OrderStatus(Enum):PENDING = 1PROCESSING = 2COMPLETED = 3CANCELED = 4order_status = OrderStatus.PENDING
print(order_status)  # 输出:OrderStatus.PENDING

配置选项

当有一组固定的配置选项时,使用枚举可以提高代码的可读性和安全性:

class ConfigOption(Enum):DEBUG = 1RELEASE = 2

标志操作

枚举还可以用于标志操作,比如定义一组标志位来表示不同的权限:

from enum import Flagclass Permission(Flag):READ = 1WRITE = 2EXECUTE = 4perm = Permission.READ | Permission.WRITE
print(perm)  # 输出:Permission.READ|WRITE

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/880660.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

15年408计算机网络

第一题: 解析: 接收方使用POP3向邮件服务器读取邮件,使用的TCP连接,TCP向上层提供的是面向连接的,可靠的数据传输服务。 第二题: 解析:物理层-不归零编码和曼彻斯特编码 编码1:电平在…

GAMES101(作业8)

作业8 题目: 模拟绳子动画,包括基于物理的,和非物理的,应该修改的函数是:rope.cpp 中的void Rope::simulateEuler(... Rope::rope(...),,void Rope::simulateVerlet(...) 代码框架: main:负…

centos磁盘逻辑卷LVM创建

centos磁盘逻辑卷LVM创建 一、磁盘逻辑卷LVM说明二、centos磁盘使用情况三、LVM安装指南1.LVM工具安装1. yum list lvm2. yum search lvm3. yum search pvcreate4. yum list lvm25. yum install lvm2 2.创建物理卷2.1磁盘情况查看2.2创建物理卷(PV) 3.创…

使用Postman工具接口测试

文章目录 一、接口1.1 接口的概念1.2 接口的类型 二、接口测试2.1 概念2.2 原理2.3 特点 三、HTTP协议3.1 http协议简介3.2 URL格式3.3 HTTP请求3.3.1 请求行3.3.2 请求头3.3.3 请求体 3.4 HTTP响应3.4.1 状态行3.4.2 响应头3.4.3 响应体 3.4 传统风格接口3.5 RESTful风格接口 …

Race Karts Pack 全管线 卡丁车赛车模型素材

是8辆高细节、可定制的赛车,内部有纹理。经过优化,可在手机游戏中使用。Unity车辆系统已实施-准备驾驶。 此套装包含8种不同的车辆,每种车辆有8-10种颜色变化,总共有75种车辆变化! 技术细节: -每辆卡丁车模型使用4种材料(车身、玻璃、车轮和BrakeFlare) 纹理大小: -车…

基于单片机的可调式中文电子日历系统

** 文章目录 前言概要功能设计软件设计效果图 程序文章目录 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们…

RSRP SNR SINR

RSRP(Reference Signal Received Power,参考信号接收功率)是衡量LTE网络中无线信号强度的关键参数之一,它表示在某个符号内承载参考信号的所有资源元素(RE)上接收到的信号功率的平均值。RSRP的数值通常在-4…

如何在O2OA中使用ElementUI组件进行审批流程工作表单设计

本文主要介绍如何在O2OA中进行审批流程表单或者工作流表单设计,O2OA主要采用拖拽可视化开发的方式完成流程表单的设计和配置,不需要过多的代码编写,业务人员可以直接进行修改操作。 在流程表单设计界面,可以在左边的工具栏找到Ele…

CSS预处理器LESS

LESS是一种CSS预处理器,它扩展了CSS的功能,通过引入变量、嵌套规则、Mixins(混合)、函数等特性,使得CSS的编写更加灵活和高效。以下是LESS的一些常用方式: 1. 变量 LESS允许定义变量,并在整个…

文心一言 VS 讯飞星火 VS chatgpt (357)-- 算法导论24.2 3题

三、上面描述的 PERT 图的公式有一点不太自然。在一个更自然的结构下,图中的结点代表要执行的工作,边代表工作之间的次序限制,即边 (u,v) 表示工作 u 必须在工作 v 之前执行。在这种结构的图中,我们将权重赋给结点&…

InnoDB 和 MyIsam 引擎的区别?数据库存储引擎的选择与解析:InnoDB 与 MyISAM 的全面对比

在当前的数字化时代,数据库不仅是保存信息的地方,更是业务运营的核心。MySQL 作为全球最流行的开源数据库之一,其灵活性和强大功能使得开发者和企业在选择存储引擎时需慎重考虑。本文将详细探讨 MySQL 中的两个主要存储引擎——InnoDB 和 MyI…

Spring面向对象的设计模式

在Spring框架中,面向对象的设计模式被广泛使用,这些设计模式能够提高代码的可维护性、可扩展性和复用性。以下是一些在Spring中常用的设计模式: 1. 单例模式(Singleton Pattern) 定义:保证一个类仅有一个…

httpsok-v1.17.0-SSL通配符证书自动续签

🔥httpsok-v1.17.0-SSL通配符证书自动续签 介绍 httpsok 是一个便捷的 HTTPS 证书自动续签工具,基于全新的设计理念,专为 Nginx 、OpenResty 服务器设计。已服务众多中小企业,稳定、安全、可靠。 一行命令,一分钟轻…

LQR算法核心思想

本章以倒立摆为解决目的 什么是线性二次型控制器(LQR) 开环系统 即状态变量的倒数 系统的状态空间矩阵A * 系统状态变量x A状态矩阵:描述系统本身物理特性的一个矩阵,它是由系统本身的机械结构、物理结构决定的,无法…

【漏洞复现】VEXUS多语言货币交易所存在未授权访问漏洞

漏洞描述 java后端,非常完整的一套交易所,UI前端做的也很漂亮,新增了交易跟单功能,前端pc+wap都是uniapp纯源码,前端源码node_modules环境已经安装好了,拿去直接编译就可以. 后端 前端 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共…

ARM 服务器上安装 OpenEuler (欧拉)

系统介绍 在 2019 年 7 月 19 日,华为宣布要在年底正式开源 openEuler 操作系统;在半年后的 12 月 31 日,华为正式开源了 openEuler 操作系统,邀请社区开发者共同来贡献。 一年后,截止到 2020 年12 月 25日&#xff…

第167天:应急响应-日志自动提取分析项目_ELK_Logkit_LogonTracer_Anolog等

目录 案例一: 日志自动提取-七牛Logkit&观星应急工具 Logkit 观星 案例二:日志自动分析-Web-360 星图&Goaccess&ALB&Anolog 360 星图 GoAccess ALB Anolog f8x 案例一: 日志自动提取-七牛Logkit&观星应急工具 …

ubuntu22.04取消开机输入密码(实测)

打开终端 sudo nano /etc/gdm3/custom.conf 在文件的[daemon]部分中添加以下两行代码: [daemon] AutomaticLoginEnableTrue AutomaticLoginusername 保存并关闭,注意usename值的是你自己登录的用户名 第二步 sudo nano /etc/pam.d/gdm-password 将…

【Linux笔记】etc/fstab文件内容解析

文件包含了系统在启动时挂载文件系统和存储设备的详细信息。 决定了哪些设备或分区在启动时应该被自动挂载,以及它们的挂载选项和挂载点。 文件中每一行代表一个文件系统或设备的挂载配置, 通常包含六个字段,这些字段之间用空格或制表符&…

Webpack 特性探讨:CDN、分包、Tree Shaking 与热更新

文章目录 前言包准备CDN 集成代码分包Tree Shaking原理实现条件:解决 treeShaking 无效方案:示例代码: 热更新(HMR) 前言 Webpack 作为现代前端开发中的核心构建工具,提供了丰富的特性来帮助开发者优化和打…