You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python旧版本(如3.10)中使用StrEnum类?

在Python 3.10中实现StrEnum的最简方法

如果你不想额外安装第三方库,手动实现一个极简版的StrEnum是最直接的方式——核心就是让类同时继承str和Enum,这样枚举成员既保留枚举的特性,又能像普通字符串一样使用:

from enum import Enum

class StrEnum(str, Enum):
    pass

# 示例用法
class Color(StrEnum):
    RED = "red"
    GREEN = "green"
    BLUE = "blue"

# 验证效果
print(Color.RED)  # 输出: red
print(isinstance(Color.RED, str))  # 输出: True

如果需要和Python 3.11的StrEnum一样支持自动用成员名作为枚举值(不用手动赋值),可以给类加上_generate_next_value_方法:

from enum import Enum, auto

class StrEnum(str, Enum):
    def _generate_next_value_(name, start, count, last_values):
        return name

# 示例用法
class Status(StrEnum):
    ACTIVE = auto()
    INACTIVE = auto()

print(Status.ACTIVE)  # 输出: ACTIVE

要是你愿意安装第三方库,backports.strenum是专门做版本兼容的工具,安装后用法和3.11原生StrEnum完全一致:

  1. 先安装:
pip install backports.strenum
  1. 使用示例:
from backports.strenum import StrEnum

class Direction(StrEnum):
    LEFT = "left"
    RIGHT = "right"
    UP = auto()  # 自动取值为"UP"

内容的提问来源于stack exchange,提问作者algebruh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 04:31:29