Python中枚举的使用

from enum import Enum


class Color(Enum):
    red = 1
    orange = 2
    yellow = 3


print(Color.red)  # 直接获取key
print(Color.orange)
print(Color.red.name)  # 获取key.name
print(Color.red.value)  # 获取key.value

输出结果为:

>>>Color.red
Color.orange
red
1

它的结构长这样: 

enum

Python 中,枚举(`enum`)是一种特殊的类,用于定义一组命名的常量。Python 3.4 及以上版本中引入了 `enum` 模块,提供了对枚举类型的支持。使用枚举可以提高代码的可读性和可维护性。 ### 枚举的基本使用方法: #### 1. 定义一个枚举类 ```python from enum import Enum class Color(Enum): RED = 1 GREEN = 2 BLUE = 3 ``` 每个枚举成员都有一个名称(name)和一个值(value)。 #### 2. 访问枚举成员 ```python print(Color.RED) # 输出: Color.RED print(Color.RED.name) # 输出: RED print(Color.RED.value) # 输出: 1 ``` #### 3. 枚举成员是唯一的,不能重复赋值(但可以通过继承 `IntEnum` 实现值比较) ```python from enum import IntEnum class Status(IntEnum): SUCCESS = 200 NOT_FOUND = 404 print(Status.SUCCESS < Status.NOT_FOUND) # 输出: True ``` #### 4. 遍历枚举 ```python for color in Color: print(color) ``` 输出: ``` Color.RED Color.GREEN Color.BLUE ``` #### 5. 通过值获取枚举成员 ```python print(Color(2)) # 输出: Color.GREEN ``` #### 6. 枚举的自动赋值功能(使用 `auto()`) ```python from enum import Enum, auto class Animal(Enum): DOG = auto() CAT = auto() BIRD = auto() print(Animal.DOG.value) # 输出: 1 print(Animal.CAT.value) # 输出: 2 ``` --- ### 枚举的优点 - **避免魔法数字**:通过枚举可以避免在代码中直接使用无意义的数字或字符串。 - **增强类型安全性**:枚举限制了变量只能取预定义的值。 - **提升可读性**:枚举常量名称比数字更具可读性。 --- ### 示例:使用枚举表示星期几 ```python from enum import Enum class Weekday(Enum): MONDAY = 1 TUESDAY = 2 WEDNESDAY = 3 THURSDAY = 4 FRIDAY = 5 SATURDAY = 6 SUNDAY = 7 def is_weekend(day: Weekday): return day in (Weekday.SATURDAY, Weekday.SUNDAY) print(is_weekend(Weekday.FRIDAY)) # 输出: False print(is_weekend(Weekday.SUNDAY)) # 输出: True ``` --- ### 枚举与 `@unique` 装饰器 如果你希望枚举的值是唯一的,可以使用 `@unique` 装饰器: ```python from enum import Enum, unique @unique class Status(Enum): OK = 200 NOT_FOUND = 404 # ERROR = 200 # 会抛出 ValueError,因为值重复了 ``` --- ### 总结 - 枚举是命名常量的集合。 - 使用 `Enum` 和 `IntEnum` 来定义枚举类。 - 使用 `auto()` 可以自动赋值。 - 使用 `@unique` 确保值唯一。 - 枚举支持遍历、比较、通过值查找等操作。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值