用于创建同时也是str子类的枚举常量的基类
backports.strenum的Python项目详细描述
python3.10的StrEnumclass for>;=3.8:
Base class for creating enumerated constants that are also subclasses of ^{tt2}$.
参见design discussion, 和Ethan Furman的first和 secondPR与此实现。在
python的实现可能与较低版本稍微兼容; 如果pr通过了测试套件,他们是受欢迎的。 现有的(引用)实现应该仍然是支持版本上使用的实现。在
使用pip install backports.strenum安装,并与以下对象一起使用:
try: # be ready for 3.10 when it drops from enum import StrEnum except ImportError: from backports.strenum import StrEnum class MyStrEnum(StrEnum): POTATO = "potato" ORANGE = "orange" SPADE = "spade" MyStrEnum.POTATO == "potato" # True MyStrEnum.ORANGE.upper() == "ORANGE" # True str(MyStrEnum.SPADE) == "spade" # True
强度
提供的Enum的第二个变体也是 str。StrEnum的成员可以与字符串进行比较; 通过扩展,还可以比较不同类型的字符串枚举 对彼此。StrEnum的存在有助于避免获取 错误成员:
^{pr2}$在StrEnum之前,Directions.NORTH应该是tuple('north',)。在
注意
与其他枚举不同,str(StrEnum.member)将返回 成员而不是通常的"EnumClass.member"。在
创建与其他数据类型混合的成员
子类化其他数据类型(如int或str)时,使用 一个Enum,=之后的所有值都传递给该数据类型的 建造师。例如:
>>> class MyEnum(IntEnum): ... example = '11', 16 # '11' will be interpreted as a hexadecimal ... # number >>> MyEnum.example <MyEnum.example: 17>
StrEnum和str.__str__
StrEnum与其他枚举之间的一个重要区别是 __str__method;由于StrEnum成员是字符串,因此 Python的一部分将直接读取字符串数据,而其他部分将调用 str()。为了使这两个操作有相同的结果, StrEnum.__str__将与str.__str__相同,因此 str(StrEnum.member) == StrEnum.member为真。在
- 项目
标签: