隐藏页面特效

python枚举之Enum模块

枚举是与多个唯一常量值绑定的一组符号(即成员)。枚举中的成员可以进行身份比较,并且枚举自身也可迭代。 枚举成员名称建议使用大写字母 # 示例 from enum import Enum,unique, IntEnum(支持成员比较) @unique # unique装饰器确保属性名和值唯一 class Color(Enum): RED = 1 GREEN = 2 BLUE = 3 # YELLOW = 2 会报错 // 不以类形式构造枚举 BugStatus = enum.Enum( value='BugStatus', names=[ ('new', 3) ('old', 2) ('won_fix', 1) ], ) for status in BugStatus: print("{0}:{1}".format(status.name, status.value)) // 非整数成员值,元组 import enum class BugStatus(enum.Enum): new = (7, ['incomplete', 'invalid', 'won_fix', 'in_progress']) incomplete = (6, ['new', 'wond_fix']) invalid = (5, ['new']) wont_fix = (4, ['new']) in_progress = (3, ['new', 'fix_committed']) fix_committed = (2, ['in_progress', 'fix_released']) fix_released = (1, ['new']) def __init__(self, num: int, transitions: list) -> None: self.num = num self.transitions = transitions def can_transition(self, new_state: object): print(new_state.name) print(self.transitions) return new_state.name in self.transitions # 如果成员的值是一个元组,那么成员会被作为单个参数被传递到__init__() print('Name', BugStatus.in_progress) print('Value', BugStatus.in_progress.value) # (3, ['new', 'fix_committed']) print('Custom attribute:', BugStatus.in_progress.transitions) # ['new', 'fix_committed'] print('Using attribute:', BugStatus.in_progress.can_transition(BugStatus.new)) #True # 使用字典 import enum class BugStatus(enum.Enum): new = { 'num': 7, 'transitions': [ 'incomplete', 'invalid', 'wont_fix', 'in_progress', ], } incomplete = {'num': 6, 'transitions': ['new']} # 复杂成员的值会被作为唯一参数传递__init__() def __init__(self, vals: dict) -> None: self.num = vals['num'] self.transitions = vals['transitions'] def can_transition(self, new_state: object): return new_state.name in self.transitions

__EOF__

本文作者404 Not Found
本文链接https://www.cnblogs.com/weiweivip666/p/15588897.html
关于博主:可能又在睡觉
版权声明:转载请注明出处
声援博主:如果看到我睡觉请喊我去学习
posted @   我在路上回头看  阅读(258)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示