用于创建同时也是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 FurmanfirstsecondPR与此实现。在

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的第二个变体也是 strStrEnum的成员可以与字符串进行比较; 通过扩展,还可以比较不同类型的字符串枚举 对彼此。StrEnum的存在有助于避免获取 错误成员:

^{pr2}$

StrEnum之前,Directions.NORTH应该是tuple('north',)。在

注意

与其他枚举不同,str(StrEnum.member)将返回 成员而不是通常的"EnumClass.member"。在

创建与其他数据类型混合的成员

子类化其他数据类型(如intstr)时,使用 一个Enum=之后的所有值都传递给该数据类型的 建造师。例如:

>>> class MyEnum(IntEnum):
...     example = '11', 16      # '11' will be interpreted as a hexadecimal
...                             # number
>>> MyEnum.example
<MyEnum.example: 17>

StrEnumstr.__str__

StrEnum与其他枚举之间的一个重要区别是 __str__method;由于StrEnum成员是字符串,因此 Python的一部分将直接读取字符串数据,而其他部分将调用 str()。为了使这两个操作有相同的结果, StrEnum.__str__将与str.__str__相同,因此 str(StrEnum.member) == StrEnum.member为真。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何处理可以为null或整数的POJO类值   JavaFXSpring类NotFoundException:org。springframework。上下文注释。注释ConfigApplicationContext   java Jackson JSON不包装嵌套对象的属性   编写多个SQL查询的java最佳实践   安卓 java。lang.IllegalStateException:无法提取AndroidPlatform、sslSocketFactory上的信任管理器   MongoDB/Morphia将技术id保存为ObjectId,尽管它在Java中是一个字符串   JavaEclipse只加载log4。测试文件夹中的属性   java如何通过次对角线遍历2D数组?   java在geotools jmappane中制作shapefile编辑器   数组如何在java中获得表大小2^32   java API调试。如何查找函数体之前发生的错误?   java如何创建二维数组,其中#1位于随机位置,并执行特定次数   java文本文件比较   java SDK支持diff spring版本   javaspring引导集成测试javax。坚持不懈PersistenceException:org。冬眠PersistentObject异常