当前位置: 首页 > news >正文

Python教程:python枚举类定义和使用

在Python中,枚举类(Enum)用于表示一组常量,使代码更加清晰和易于维护。枚举类通过enum模块定义。以下是如何定义和使用枚举类的详细步骤。

定义枚举类

首先,你需要导入enum模块,然后定义一个枚举类。枚举类中的每个成员都是该类的实例,并且每个成员都有一个唯一的名称和值。

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

在这个例子中,Color是一个枚举类,它有三个成员:RED、GREEN和BLUE,每个成员都有一个对应的整数值。

使用枚举类

你可以像使用普通类一样使用枚举类。枚举类的成员可以通过类名来访问,并且每个成员都有name和value属性。

# 访问枚举成员  
print(Color.RED)          # 输出: Color.RED  
print(Color.RED.name)     # 输出: RED  
print(Color.RED.value)    # 输出: 1  # 遍历枚举成员  
for color in Color:  print(color.name, color.value)  
# 输出:  
# RED 1  
# GREEN 2  
# BLUE 3

枚举的比较和身份

枚举成员可以进行比较和身份检查。

# 比较枚举成员  
print(Color.RED == Color.RED)   # 输出: True  
print(Color.RED == Color.GREEN) # 输出: False  # 身份检查  
print(Color.RED is Color(1))    # 输出: True

枚举成员的唯一性

枚举成员的值在枚举类中必须是唯一的。如果尝试定义两个具有相同值的成员,将会引发ValueError。

class InvalidColor(Enum):  RED = 1  ANOTHER_RED = 1  # 这将引发 ValueError

自定义枚举值

枚举成员的值不必是整数,它们可以是任何不可变类型(例如字符串、元组等)。

class Status(Enum):  PENDING = 'pending'  APPROVED = 'approved'  REJECTED = 'rejected'  print(Status.PENDING.value)  # 输出: pending

枚举的自动方法和属性

枚举类有一些有用的方法和属性:

members:返回包含所有成员名称和成员的字典。
iter():允许枚举类被迭代。

# 获取所有成员  
members = Color.__members__  
print(members)  # 输出: {'RED': <Color.RED: 1>, 'GREEN': <Color.GREEN: 2>, 'BLUE': <Color.BLUE: 3>}  # 检查成员是否存在  
print('RED' in Color.__members__)  # 输出: True  
print('YELLOW' in Color.__members__)  # 输出: False

示例:使用枚举类处理状态

假设你有一个订单处理系统,可以使用枚举类来表示订单的状态。

class OrderStatus(Enum):  CREATED = 1  IN_PROGRESS = 2  COMPLETED = 3  CANCELLED = 4  # 示例订单  
order = {  'id': 123,  'status': OrderStatus.CREATED  
}  # 检查订单状态  
if order['status'] == OrderStatus.CREATED:  print("Order has been created.")  
elif order['status'] == OrderStatus.COMPLETED:  print("Order has been completed.")  
else:  print("Order is in another status.")

总结
枚举类在Python中提供了一种简洁且类型安全的方式来定义和使用常量集。通过enum模块,你可以轻松创建枚举类,并享受它们带来的诸多便利。

相关文章:

Python教程:python枚举类定义和使用

在Python中&#xff0c;枚举类&#xff08;Enum&#xff09;用于表示一组常量&#xff0c;使代码更加清晰和易于维护。枚举类通过enum模块定义。以下是如何定义和使用枚举类的详细步骤。 定义枚举类 首先&#xff0c;你需要导入enum模块&#xff0c;然后定义一个枚举类。枚举…...

Java学习Day60:微服务总结!(有经处无火,无火处无经)

1、技术版本 jdk&#xff1a;17及以上 -如果JDK8 springboot&#xff1a;3.1及其以上 -版本2.x springFramWork&#xff1a;6.0及其以上 -版本5.x springCloud&#xff1a;2022.0.5 -版本格林威治或者休斯顿 2、模拟springcloud 父模块指定父pom <parent><…...

MySQL日期类型选择建议

我们平时开发中不可避免的就是要存储时间&#xff0c;比如我们要记录操作表中这条记录的时间、记录转账的交易时间、记录出发时间、用户下单时间等等。你会发现时间这个东西与我们开发的联系还是非常紧密的&#xff0c;用的好与不好会给我们的业务甚至功能带来很大的影响。所以…...

70B的模型做微调,使用A10*8的卡能够使用

使用 8 张 A10 GPU&#xff08;每张 A10 GPU 大约有 24 GB 的显存&#xff09;来微调 70B 参数的模型会比较困难&#xff0c;主要原因是显存不足。像 70B 参数量级的模型&#xff08;如 LLaMA-2 70B、BLOOM-176B&#xff09;通常需要几百 GB 以上的显存&#xff0c;仅加载模型就…...

将vscode的终端改为cygwin terminal

现在终端是默认的power shell&#xff0c;没有显示cygwin 接下来选择默认配置文件 找到cygwin的选项即可 然后提示可能不安全什么的&#xff0c;点是&#xff0c;就有了...

《ASP.Net Core技术内幕与项目实战》读书笔记_1

ch1 .NET Core入门 .NET介绍 这一章主要说的是.Net Core、.Net Framework、.Net Stanard三个之间的关系。通俗来讲就是Core是新出的、能跨平台&#xff0c;Framwork是老版的、不能跨平台&#xff0c;Standard是为了在Framework、Core、Xamarin中统一库的使用而定制的规范&#…...

【青牛科技】应用方案|D2587A高压大电流DC-DC

1、概述 D2587A稳压器是专为反激式、升压和正向转换器应用而设计的单片集成电路。该器件提供四种不同的输出电压版本&#xff1a;3.3V、5V、12V 和可调节电压。这些稳压器需要的外部元器件很少&#xff0c;因此具有成本效益&#xff0c;并且易于使用。该电源开关是一款5A NPN器…...

【测试】【Debug】pytest运行后print没有输出

import pytest def test_good():for i in range(1000):print(i)def test_bad():print(this should fail!)assert False比如上述程序&#xff0c;运行之后只能看到输出了’this should fail!&#xff1b;但是debug版的测试运行后又能看到test_good函数中的输出。 这是为什么呢&a…...

linux strace 查看程序异常问题总结

1&#xff0c;死锁问题 #include <stdio.h> #include <pthread.h> #include <unistd.h>pthread_mutex_t lock1 PTHREAD_MUTEX_INITIALIZER; pthread_mutex_t lock2 PTHREAD_MUTEX_INITIALIZER;void* thread_func1(void* arg) {pthread_mutex_lock(&lo…...

8086汇编常见寄存器与指令

本文为学习书籍《汇编语言(第4版)》后的小结。 1、寄存器 序号寄存器描述1ax运算寄存器2bx地址寄存器&#xff0c;偏移地址3cx计数寄存器&#xff0c;loop的结束条件&#xff0c;jcxz的跳转条件4dx运算寄存器5cs段地址&#xff0c;指令执行段地址6ss段地址&#xff0c;栈的段地…...

Group By、Having用法总结(常见踩雷点总结—SQL)

Group By、Having用法总结 目录 Group By、Having用法总结一、 GROUP BY 用法二、 HAVING 用法三、 GROUP BY 和 HAVING 的常见踩雷点3.1 GROUP BY 选择的列必须出现在 SELECT 中&#xff08;&#x1f923;最重要的一点&#xff09;3.2 HAVING 与 WHERE 的区别3.3 GROUP BY 可以…...

Redis持久化机制——针对实习面试

目录 Redis持久化机制Redis为什么要有持久化机制&#xff1f;Redis持久化方式有哪些&#xff1f;AOF持久化工作原理是什么&#xff1f;有什么优缺点&#xff1f;AOF持久化工作原理AOF的优点AOF的缺点 RDB持久化工作原理是什么&#xff1f;有什么优缺点&#xff1f;RDB持久化工作…...

Windows系统服务器怎么设置远程连接?详细步骤

一、什么是Windows远程桌面连接? Windows远程桌面(Remote Desktop)功能使用户能够通过网络连接到另一台Windows计算机&#xff0c;实现远程操作。远程桌面非常适合系统管理员、技术支持人员以及那些需要远程工作的人&#xff0c;它允许用户以图形界面的方式访问远程计算机&…...

【Rust设计模式之建造者模式】

Rust设计模式之建造者模式 什么是建造者模式 什么是建造者模式 即将结构体属性方法与构建解离&#xff0c;使用专门的builder进行建造&#xff0c;说白了就是new和其他的方法分开&#xff0c;集中处理更方便。 直接上代码&#xff1a; #[derive(Debug)] struct children {nam…...

2024中国移动(南京)智算大会暨人工智能产业大会即将盛大启幕

11月9日&#xff0c;2024中国移动&#xff08;南京&#xff09;智算大会暨人工智能产业大会将在南京国际博览中心盛大举行。此次盛会将汇聚政界、学界与商界的顶尖力量&#xff0c;共同探讨智能计算与人工智能的未来发展方向&#xff0c;为智能计算与人工智能产业的发展注入新的…...

计算机毕业设计 | SpringBoot咖啡商城 购物采买平台 后台管理软件(附源码)

1&#xff0c;项目背景 1.1 当前的问题和困惑 系统稳定性&#xff1a; 在高并发访问时&#xff0c;商城系统容易出现卡顿、崩溃等问题&#xff0c;影响了用户体验和销售额。支付安全性&#xff1a; 支付环节存在潜在的安全隐患&#xff0c;如何确保支付过程的安全性和用户资金…...

CosyVoice文本转语音:轻松创造个性化音频

CosyVoice文本转语音&#xff1a;轻松创造个性化音频" 要实现一个使用通义语音合成模型CosyVoice将文字转换为音频的图形界面应用&#xff0c;可以使用Python的tkinter库来创建图形用户界面&#xff08;GUI&#xff09;&#xff0c;并使用requests库来调用CosyVoice的API…...

法语nous sommes

法语短语 “nous sommes” 的词源可以追溯到拉丁语&#xff0c;具体分析如下&#xff1a; 1. “Nous” 的词源&#xff1a; “Nous” 是法语中表示 “我们” 的人称代词&#xff0c;源自拉丁语的 “nos”&#xff0c;它表示 “我们” 的意思。 拉丁语 “nos” 是第一人称复数…...

《化学进展》

《化学进展》主要栏目有&#xff1a;综述&#xff0c;评论&#xff0c;中国化学印记&#xff0c;Mini Accounts等。本刊可供化学及相关学科领域的科研、教学、决策管理人员及研究生阅读。 《化学进展》投稿指南稿件要求   &#xff08;1&#xff09;本刊仅接受综述与评论性的…...

CNN和RCNN的关系和区别

RCNN&#xff08;Region-based Convolutional Neural Network&#xff09;和 CNN&#xff08;Convolutional Neural Network&#xff09;是两种不同的神经网络架构&#xff0c;它们在应用和结构上有所不同。以下是它们之间的主要区别&#xff1a; 1. 基本概念 CNN&#xff08;…...

Flet按钮控件终极指南:从基础到高级的完整样式定制教程

Flet按钮控件终极指南&#xff1a;从基础到高级的完整样式定制教程 【免费下载链接】flet Build realtime web, mobile and desktop apps in Python only. No frontend experience required. 项目地址: https://gitcode.com/gh_mirrors/fl/flet Flet是一个革命性的Pytho…...

微信QQ防撤回终极指南:RevokeMsgPatcher技术深度解析

微信QQ防撤回终极指南&#xff1a;RevokeMsgPatcher技术深度解析 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁&#xff08;我已经看到了&#xff0c;撤回也没用了&#xff09; 项目地址: https://gitcode.com…...

为什么你的Perplexity本地服务响应慢3.7倍?:NVIDIA驱动版本、vLLM推理后端与量化精度的隐性博弈

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Perplexity本地服务查询 Perplexity 作为一款强调实时信息检索与引用溯源的 AI 工具&#xff0c;其官方未提供公开的本地化部署方案。但开发者可通过构建轻量级代理服务&#xff0c;将本地运行的大语言模型&a…...

为Claude Code配置Taotoken解决密钥被封与Token不足难题

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为Claude Code配置Taotoken解决密钥被封与Token不足难题 应用场景类&#xff0c;针对经常使用Claude Code但受限于官方限制的开发者…...

RT-Thread开发者大会技术解析:从RTOS内核到AIoT平台实战指南

1. 项目概述&#xff1a;一场国产嵌入式技术的年度盛会 2021年的RT-Thread开发者大会&#xff0c;对于当时国内嵌入式软件圈的从业者来说&#xff0c;绝对是一个绕不开的关键节点。那一年&#xff0c;整个行业正处在一个微妙的转折期&#xff1a;一方面&#xff0c;芯片供应链…...

从“能上传”到“可信可用”:如何用 Python 设计一个安全、可靠、可扩展的文件上传服务?

从“能上传”到“可信可用”&#xff1a;如何用 Python 设计一个安全、可靠、可扩展的文件上传服务&#xff1f; 文件上传服务看似简单&#xff1a;用户点一下按钮&#xff0c;文件传到服务器&#xff0c;返回一个 URL。可真正进入生产环境后&#xff0c;你会发现它不是一个“保…...

ComfyUI Portrait Master中文版:终极AI肖像提示词生成指南

ComfyUI Portrait Master中文版&#xff1a;终极AI肖像提示词生成指南 【免费下载链接】comfyui-portrait-master-zh-cn 肖像大师 中文版 comfyui-portrait-master 项目地址: https://gitcode.com/gh_mirrors/co/comfyui-portrait-master-zh-cn ComfyUI Portrait Master…...

别再死记公式了!用Cadence Virtuoso手把手仿真折叠Cascode运放的增益与带宽

折叠Cascode运放仿真实战&#xff1a;从理论到波形的完整验证指南 在模拟IC设计的海洋里&#xff0c;折叠Cascode运算放大器就像一艘兼具速度与稳定性的快艇——它能提供高增益、宽带宽和良好的输出摆幅。但当你从教科书走向Cadence Virtuoso的仿真界面时&#xff0c;是否经常遇…...

别再让一条宽带拖慢整个公司!手把手教你用H3C防火墙配置双WAN口负载均衡(附HCL模拟器配置)

中小企业网络优化实战&#xff1a;H3C防火墙双WAN负载均衡配置指南 当视频会议频繁卡顿、文件传输速度像蜗牛爬行时&#xff0c;单条宽带已成为制约企业效率的瓶颈。对于50-200人规模的中小企业&#xff0c;双WAN负载均衡技术能以极低成本实现带宽翻倍&#xff0c;本文将用一台…...

curatedMetagenomicData 应用宝典:3步实现人类微生物组数据分析实战

curatedMetagenomicData 应用宝典&#xff1a;3步实现人类微生物组数据分析实战 【免费下载链接】curatedMetagenomicData Curated Metagenomic Data of the Human Microbiome 项目地址: https://gitcode.com/gh_mirrors/cu/curatedMetagenomicData curatedMetagenomicD…...