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

企业网站建设合作协议范文网页设计视频

企业网站建设合作协议范文,网页设计视频,泰州建筑工程网,网站优化说明本文深入介绍 Python 的枚举类型,从基本概念、创建方式到成员访问、比较运算等方面进行详细解析,涵盖Enum、Flag、IntEnum等多种枚举类型,结合丰富示例与直观图表,助力读者全面掌握枚举知识,提升代码的可读性与可维护性…

本文深入介绍 Python 的枚举类型,从基本概念、创建方式到成员访问、比较运算等方面进行详细解析,涵盖EnumFlagIntEnum等多种枚举类型,结合丰富示例与直观图表,助力读者全面掌握枚举知识,提升代码的可读性与可维护性。

目录

枚举基础概念

枚举的创建与基本使用

枚举的扩展与行为添加

Flag枚举

自动设定枚举值

枚举成员的比较运算

枚举的其他特性

重点知识点扩展

(一)枚举在状态机中的应用

(二)结合枚举与数据库操作

(三)在配置文件解析中的使用

总结


枚举基础概念

枚举(Enum)是一组绑定到唯一值的符号名称,用于表示有限个可选值的集合。它在功能上类似全局变量,但具备更好的repr()输出、分组特性和类型安全性 。 在实际编程中,当某个变量的取值范围固定且有限时,枚举就派上用场了。比如表示一周中的每一天,或是 RGB 颜色模型中的基本颜色等场景。

枚举的创建与基本使用

创建枚举很简单,定义一个继承自Enum的类即可。成员名建议采用大写形式,以表示这是常量

from enum import Enum
​
​
class Weekday(Enum):MONDAY = 1TUESDAY = 2WEDNESDAY = 3THURSDAY = 4FRIDAY = 5SATURDAY = 6SUNDAY = 7
​
​
class Color(Enum):RED = 1GREEN = 2BLUE = 3

枚举成员有一些有用的属性,name属性返回成员的名称,value属性返回其对应的值 。

# 通过值访问
print(Weekday(3))  
# 通过名称访问
print(Color['RED'])  

枚举成员的repr()会显示枚举名称、成员名称和值;str()则只显示枚举名称和成员名称 。

枚举的扩展与行为添加

枚举类可以添加方法。例如,为Weekday枚举添加一个从date对象获取对应枚举成员的方法:

from datetime import date
​
​
class Weekday(Enum):MONDAY = 1TUESDAY = 2WEDNESDAY = 3THURSDAY = 4FRIDAY = 5SATURDAY = 6SUNDAY = 7
​@classmethoddef from_date(cls, date):return cls(date.isoweekday())
​
​
print(Weekday.from_date(date.today()))  

Flag枚举

Flag枚举用于表示可以包含多个值的情况,继承自Flag类,且成员值通常为 2 的幂 。

from enum import Flag
​
​
class Weekday(Flag):MONDAY = 1TUESDAY = 2WEDNESDAY = 4THURSDAY = 8FRIDAY = 16SATURDAY = 32SUNDAY = 64
​
​
# 单个选择
first_week_day = Weekday.MONDAY
# 多个成员合并
weekend = Weekday.SATURDAY | Weekday.SUNDAY

Flag枚举可以进行迭代,方便处理多个值的情况 。

自动设定枚举值

当具体的枚举值不重要时,可以使用auto()来自动设置值 。

from enum import Enum, auto
​
​
class Color(Enum):RED = auto()BLUE = auto()GREEN = auto()
​
​
print([member.value for member in Color])  

枚举成员的比较运算

枚举成员按 ID 进行比较,不支持有序比较 。相等性比较是基于成员本身进行判断的

比较操作示例结果
同一性比较Color.RED is Color.REDTrue
同一性比较Color.RED is Color.BLUEFalse
相等性比较Color.BLUE == Color.REDFalse
相等性比较Color.BLUE == Color.BLUETrue
与非枚举值比较Color.BLUE == 2False

枚举的其他特性

  1. 重复成员与别名:枚举中成员名不能重复,但一个值可以有多个名称,这些名称互为别名 。

  2. 确保值唯一:使用unique()装饰器可以确保枚举值唯一,避免重复值的出现 。

  3. 迭代枚举成员:直接迭代枚举成员不会列出别名,__members__属性可用于获取包含别名的所有成员信息 。

  4. 合法成员与属性:枚举类可包含普通方法和特殊方法,但名称以单下划线开头和结尾的是保留的,特殊方法和描述符不会成为枚举成员 。

  5. 受限的子类化:定义了成员的枚举类通常不能被子类化,未定义成员的枚举类可以被子类化 。

  6. 数据类支持:从dataclass继承时,__repr__()会有特殊表现,可通过repr=False参数使用标准的repr()

  7. 打包与解包:枚举类型可被打包和解包,但有一定限制,如必须在模块最高层级定义,可通过定义__reduce_ex__()修改打包方式 。

  8. 函数式 APIEnum类提供函数式 API,可通过调用创建枚举,需注意模块名和qualname的设置 。

  9. 派生枚举 - IntEnumIntEnumEnum的变种,同时也是int的子类,其成员可与整数进行比较 。

重点知识点扩展

(一)枚举在状态机中的应用

状态机是一种常用的设计模式,用于管理对象在不同状态下的行为。枚举在状态机中非常有用,可以清晰地定义各种状态。例如,一个简单的网络连接状态机:

from enum import Enum
​
​
class NetworkStatus(Enum):DISCONNECTED = 1CONNECTING = 2CONNECTED = 3DISCONNECTING = 4
​
​
class NetworkConnection:def __init__(self):self.status = NetworkStatus.DISCONNECTED
​def connect(self):if self.status == NetworkStatus.DISCONNECTED:self.status = NetworkStatus.CONNECTING# 模拟连接操作self.status = NetworkStatus.CONNECTEDelse:print(f"当前状态为 {self.status.name},无法连接")
​def disconnect(self):if self.status == NetworkStatus.CONNECTED:self.status = NetworkStatus.DISCONNECTING# 模拟断开操作self.status = NetworkStatus.DISCONNECTEDelse:print(f"当前状态为 {self.status.name},无法断开")
​
​
conn = NetworkConnection()
conn.connect()
conn.disconnect()

(二)结合枚举与数据库操作

在数据库操作中,枚举可以用于表示数据库表中的某些字段的取值范围。例如,一个用户角色表,角色类型是有限的几种:

#--- coding:utf-8 ---
from enum import Enum
import sqlite3class UserRole(Enum):ADMIN = 1USER = 2GUEST = 3# 创建数据库表
conn = sqlite3.connect('example.db')
cursor = conn.cursor()# 查询数据库表中是否有 users 表, 如果没有则创建
cursor.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='users'")
# 如果没有则创建
if cursor.fetchone() is None:cursor.execute('''CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, role INTEGER)''')# 插入数据
user1 = ('Alice', UserRole.ADMIN.value)
cursor.execute("INSERT INTO users (name, role) VALUES (?,?)", user1)# 查询数据
cursor.execute("SELECT * FROM users WHERE role =?", (UserRole.ADMIN.value,))
result = cursor.fetchone()
print(result)# 关闭数据库连接
conn.commit()
conn.close()

(三)在配置文件解析中的使用

在解析配置文件时,枚举可以帮助确保配置项的值是合法的。比如,一个游戏配置文件中,图形质量有几种预设选项:

from enum import Enum
​
​
class GraphicsQuality(Enum):LOW = 1MEDIUM = 2HIGH = 3
​
​
# 模拟读取配置文件
config = {'graphics_quality': 'HIGH'
}
​
# 解析配置
quality = GraphicsQuality[config['graphics_quality']]
print(f"当前图形质量设置为: {quality.name}")

总结

Python 的枚举类型为开发者提供了一种强大且方便的方式来处理有限个可选值的场景。通过使用枚举,可以使代码更加清晰、易读,并且增强类型安全性。从基本的枚举创建、成员访问,到复杂的扩展、比较运算以及在各种实际场景中的应用,枚举都展现出了其独特的优势。掌握枚举的使用方法,能够提升代码的质量和可维护性,让开发过程更加高效。

TAG: Python、枚举、Enum、Flag、IntEnum

官方文档:Python 官方文档 - Enum 指南,提供了最权威和详细的知识点说明,是深入学习的重要参考。

http://www.dtcms.com/wzjs/819703.html

相关文章:

  • 做网站标签栏的图片大小泉州网站建设方案开发
  • 网站开发合同及报价单wordpress seo主题
  • 多少钱一个网站网站建设必要步骤
  • 建个人博客网站樱花动漫imomoe官网入口
  • 建设部人才网站智慧团建官网入口登录
  • 做网站费用 会计分录网站开发协义
  • 郑州建设网站费用在因特网上建设网站可选择的方案
  • 网站域名包括哪些多语言wordpress
  • 国内做网站最好的公司个人网站做哪种类型
  • 东莞网站的制作怎么把网站放到服务器上
  • 银川专业做网站新网站在谷歌上面怎么做推广
  • 网站开发平台软件新的网站建设技术方案
  • 深圳营销型网站定制网站建设公司清明雨上
  • 网站获取客户信息需要备案吗网站建设如何定位
  • 海南网络公司网站建设重庆哪里可以学习网站建设和维护
  • 单位的网站建设费如何核算国外做名片的网站
  • 网站在线建设网站开发中职教材
  • 网站 建设 申请报告免费网络推广网址
  • 什么是网络营销?如何理解它的产生和把握它的特点?东莞百度网站排名优化
  • 企业网站模板html下载idea的网站开发登录页面
  • 临海响应式网站设计建网站到底需要多少钱
  • 专业郑州做网站网站设计规划说明书
  • 做优化网站是什么意思网站维护的方法
  • 学校网站建设全包网站内容品质
  • 网站悬浮qq宁波网站建设选择荣胜网络
  • 大冶网站开发wordpress空间大小
  • 办个网站多少钱三星网上商城app下载
  • 什么是企业网站策划案wordpress公司展示网站
  • 手机排行榜网站中国机械加工网卸粮四通
  • 网站登陆系统怎么做百度搜索不到任何网站