如何在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完全一致:
- 先安装:
pip install backports.strenum
- 使用示例:
from backports.strenum import StrEnum class Direction(StrEnum): LEFT = "left" RIGHT = "right" UP = auto() # 自动取值为"UP"
内容的提问来源于stack exchange,提问作者algebruh
相关产品推荐
相关产品推荐

