当前位置:首页>python>Python学习--枚举类定义

Python学习--枚举类定义

  • 2026-08-22 10:52:29
Python学习--枚举类定义

枚举(Enumeration)是一种特殊的数据类型,用于定义一组命名的常量。Python 3.4+ 引入了 enum 模块来支持枚举类型。

1. 基础枚举定义

使用 Enum 类

from enum import Enumclass Color(Enum):    RED = 1    GREEN = 2    BLUE = 3# 使用方式print(Color.RED)          # Color.REDprint(Color.RED.name)     # 'RED'print(Color.RED.value)    # 1

使用 IntEnum(值必须是整数)

from enumimport IntEnumclass Status(IntEnum):    PENDING = 0    RUNNING = 1    COMPLETED = 2    FAILED = -1

2. 使用 auto() 自动赋值

from enum import Enum, autoclass Priority(Enum):    LOW = auto()      # 自动赋值为 1    MEDIUM = auto()   # 自动赋值为 2    HIGH = auto()     # 自动赋值为 3

3. 字符串枚举

from enum import Enumclass HttpMethod(Enum):    GET = 'GET'    POST = 'POST'    PUT = 'PUT'    DELETE = 'DELETE'    @classmethod    def has_value(cls, value):        return any(value == item.value for item in cls)

4. 带功能的枚举类

from enum import Enumclass Weekday(Enum):    MONDAY = 1    TUESDAY = 2    WEDNESDAY = 3    THURSDAY = 4    FRIDAY = 5    SATURDAY = 6    SUNDAY = 7    def is_weekend(self):        return self in [Weekday.SATURDAY, Weekday.SUNDAY]    def next_day(self):        # 获取下一天        days = list(Weekday)        next_index = (days.index(self) + 1) % len(days)        return days[next_index]# 使用day = Weekday.MONDAYprint(day.is_weekend())  # Falseprint(day.next_day())    # Weekday.TUESDAY

5. Flag 枚举(支持位运算)

from enum import Flag, autoclass Permission(Flag):    READ = auto()     # 1    WRITE = auto()    # 2    EXECUTE = auto()  # 4    ALL = READ | WRITE | EXECUTE  # 7# 使用perms = Permission.READ | Permission.WRITEprint(perms)  # Permission.READ|WRITEprint(Permission.READ in perms)  # True

主要特点:

  1. 不可变性:枚举成员是常量,不能修改

  2. 类型安全:提供了更好的类型提示

  3. 可迭代:可以直接遍历所有成员

  4. 可比较:支持 is 和 == 比较

  5. 可序列化:支持 JSON 序列化等

选择哪种枚举类型取决于具体需求:基础数据用 Enum,需要整数特性用 IntEnum,需要位运算用 Flag。

最新文章

随机文章