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

enum库

Python enum 模块教程

enum 是 Python 3.4 引入的一个模块,用于定义枚举类型。枚举类型是一种特殊的数据类型,由一组命名的值组成,这些值称为枚举成员。使用 enum 可以提高代码的可读性和可维护性,特别是在处理一组相关的常量值时。

官方文档链接

Python Enum官方文档

枚举类型的定义和使用

  1. 定义枚举类型

你可以使用 Enum 类来定义枚举类型。每个枚举成员由名称和值组成:

from enum import Enumclass Color(Enum):RED = 1GREEN = 2BLUE = 3
  1. 访问枚举成员

枚举成员可以通过名称或值来访问:

# 通过名称访问
print(Color.RED)
print(Color['RED'])# 通过值访问
print(Color(1))
  1. 枚举成员的属性

每个枚举成员有两个主要属性:namevalue

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

枚举的迭代和比较

  1. 迭代枚举成员

你可以使用 for 循环来迭代枚举成员:

for color in Color:print(color)
  1. 比较枚举成员

枚举成员可以使用 ==is 进行比较:

print(Color.RED == Color.RED)  # 输出: True
print(Color.RED is Color.RED)  # 输出: Trueprint(Color.RED == Color.BLUE)  # 输出: False
print(Color.RED is Color.BLUE)  # 输出: False

枚举的高级功能

  1. 自定义枚举成员值

枚举成员的值可以是任何数据类型,不限于整数:

class Shape(Enum):CIRCLE = 'circle'SQUARE = 'square'TRIANGLE = 'triangle'
  1. 自动赋值枚举成员

使用 auto() 可以自动为枚举成员赋值:

from enum import autoclass Animal(Enum):DOG = auto()CAT = auto()BIRD = auto()print(list(Animal))  # 输出: [<Animal.DOG: 1>, <Animal.CAT: 2>, <Animal.BIRD: 3>]
  1. 枚举成员的别名

同一个值可以有多个名称,这些名称称为别名:

class Status(Enum):SUCCESS = 0FAILURE = 1ERROR = 1print(Status.SUCCESS)  # 输出: Status.SUCCESS
print(Status.FAILURE)  # 输出: Status.FAILURE
print(Status.ERROR)    # 输出: Status.FAILURE
  1. 扩展枚举

可以通过继承 Enum 类来扩展枚举:

class ExtendedColor(Color):YELLOW = 4BLACK = 5
  1. 自定义方法

枚举类可以定义自定义方法:

class Planet(Enum):MERCURY = 1VENUS = 2EARTH = 3def describe(self):return f'Planet {self.name} is number {self.value} from the sun.'print(Planet.EARTH.describe())  # 输出: Planet EARTH is number 3 from the sun.

使用示例

以下是一个完整的示例,展示了如何定义和使用枚举类型:

from enum import Enum, autoclass Color(Enum):RED = auto()GREEN = auto()BLUE = auto()class Shape(Enum):CIRCLE = 'circle'SQUARE = 'square'TRIANGLE = 'triangle'def describe_color(color):if color == Color.RED:return "The color is red."elif color == Color.GREEN:return "The color is green."elif color == Color.BLUE:return "The color is blue."else:return "Unknown color."def describe_shape(shape):return f'The shape is a {shape.value}.'print(describe_color(Color.RED))         # 输出: The color is red.
print(describe_color(Color.GREEN))       # 输出: The color is green.
print(describe_shape(Shape.CIRCLE))      # 输出: The shape is a circle.
print(describe_shape(Shape.SQUARE))      # 输出: The shape is a square.

总结

Python 的 enum 模块提供了一种简洁而强大的方式来定义和使用枚举类型。通过本文介绍的基本用法和高级功能,开发者可以轻松上手并熟练运用 enum 进行常量值的管理和处理。更多详细信息和示例请参考官方文档。

相关文章:

  • SSM实现设置商品秒杀券的后端设计思路
  • 互联网广告相关概念
  • Pyinstaller 打包exe后,打开出现can‘t find package tkdnd 报错
  • 科技云报道:推进工业新质生产力机器人有望成为AI下一个新引擎?
  • 如何制作 PDF 文件
  • 测速小车模块
  • C++ 类与对象的使用要点(超详细解析,小白必看系列)
  • 昇思大模型学习·第一天
  • TDesign环境搭建-后台模板的安装和使用-构建web管理端后台系统
  • upload-labs第十三关教程
  • 微信小程序地图功能详解
  • N32G031时钟配置
  • 《Unity3D高级编程之进阶主程》第一章 C#要点技术(二) - Dictionary 底层源码剖析
  • 【LeetCode 动态规划】买卖股票的最佳时机问题合集
  • 坚持刷题|反转链表
  • [iOS]Core Data浅析一 -- 启用Core Data
  • 《Java编程思想》读书笔记-对象导论
  • 【技术性】Search知识
  • Java程序员幽默爆笑锦集
  • log4j2输出到kafka
  • PV统计优化设计
  • Redash本地开发环境搭建
  • scrapy学习之路4(itemloder的使用)
  • v-if和v-for连用出现的问题
  • Vultr 教程目录
  • 初探 Vue 生命周期和钩子函数
  • 浮现式设计
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 《天龙八部3D》Unity技术方案揭秘
  • ​ArcGIS Pro 如何批量删除字段
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • #pragma once
  • #pragma 指令
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (day18) leetcode 204.计数质数
  • (done) 声音信号处理基础知识(4) (Understanding Audio Signals for ML)
  • (二)linux使用docker容器运行mysql
  • (五)关系数据库标准语言SQL
  • .NET gRPC 和RESTful简单对比
  • .net 连接达梦数据库开发环境部署
  • .net打印*三角形
  • .net对接阿里云CSB服务
  • ::before和::after 常见的用法
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • @德人合科技——天锐绿盾 | 图纸加密软件有哪些功能呢?
  • [ NOI 2001 ] 食物链
  • [].slice.call()将类数组转化为真正的数组
  • [120_移动开发Android]008_android开发之Pull操作xml文件
  • [2]十道算法题【Java实现】
  • [202209]mysql8.0 双主集群搭建 亲测可用
  • [AIGC] MySQL存储引擎详解
  • [AIGC] 使用Curl进行网络请求的常见用法
  • [C#]winform使用引导APSF和梯度自适应卷积增强夜间雾图像的可见性算法实现夜间雾霾图像的可见度增强
  • [C++][opencv]基于opencv实现photoshop算法图像剪切