学习Python字符串到枚举的转换

1,404 阅读4分钟

Enum或enumeration是一组分配给常数和唯一值的符号名称。在枚举中,Enum的成员可以通过它们的身份进行比较,而且Enum本身可以反复迭代。Enum变量类似于全局变量;但是,它们提供了更有用的类型安全、分组和其他有价值的功能。此外,Enumerations是专门用来表示常量的,所以建议Enum的成员使用UPPER CASE变量。

Enum类的模块内容

有四个模块内容或Enumeration类,用于定义独特的值和名称集合。这四个枚举类是IntFlag, Flag, IntEnum, 和Enum。此外,它还提供了一个帮助器auto和一个装饰器Unique()。Enum类被创建为'class enum.Enum'。它是一个基类,用于创建枚举常量。IntEnum类被创建为'class enum.IntEnum'。IntEnum枚举类是另一个基类,用于创建枚举常量,即int的子类。下一个类是Flag,它被创建为'class enum.Flag'。

Flag创建的枚举常量可以通过使用位操作进行组合而不会失去Flag成员的身份。IntFlag枚举类具有与Flag枚举类相同的功能。它也创建了一些枚举常量,这些枚举常量可以通过位操作进行组合而不会失去IntFlag成员资格。装饰器,unique()被创建为'enum.unique()',它确保只有值与一个名称相关。最后但同样重要的是,帮助器auto被创建为'class enum.auto'。它被用来用一个合适的值来替换Enum成员的实例。然而,默认情况下,起始值从1开始。

例子1:

我们的第一个例子是关于创建枚举类。正如我们所观察到的,Enum是用类的语法创建的,这使得它很容易编写和阅读。在一个变量可以获得部分数值集合中的一个时,枚举是非常有用的。下面是一个如何定义Enum类的例子。

from enum import Enum

class Months(Enum):

JANUARY = 1

FEBURARY = 2

MARCH = 3

APRIL = 4

MAY = 5

JUNE = 6

Shape Description automatically generated with medium confidence

注意,创建一个Enum类本身非常简单,就像编写一个继承于Enum本身的类一样。此外,一个Enum的成员的值可能是必不可少的,也可能不是;但是,无论如何,成员的值都是用来提取相应的成员的。请看下面给出的例子。

当你调用Enum的成员'months'时,你会得到以下输出。

例2:

另一种获取Enum成员的方式如下例所示。

Months.MAY

下面是上述语句的输出。

正如你所看到的,两种方式都可以获得Enum类的成员。

注意:Enum成员的值可以是任何东西;str,int,等等。当确切的值不重要时,可以使用帮助器'auto'的实例,这样就可以选择一个合适的值。然而,当你把'auto'帮助器和其他值混在一起时,你需要小心。

例3:

你可以观察到,创建和定义Enum是非常简单的,就像创建和定义其他类一样。然而,这里我们有一个简单的例子来帮助你理解将python字符串转换为Enum。让我们运行下面给出的代码,看看执行后得到什么。

from enum import Enum

class Profit(Enum):

PURCHASE = 50000

SALE = 10000

Profit['PURCHASE']

Shape Description automatically generated with medium confidence

复制-粘贴代码,或者通过简单地按照指示制作你自己的自定义Enum类,并看到输出。输入随后的命令,将python字符串转换为enum。

当你输入上面给出的代码时,将产生以下输出。

例4:

下面是另一个将python字符串转换为Enum的例子。

class stringEnum(Enum):

x = 'abc'

y = 456

print(stringEnum('abc'), stringEnum(456))

Text Description automatically generated

当你执行上述语句时,你将得到以下输出。

正如你所看到的,字符串被转换为str()和int()两种。Enum成员的值可以用两种方式提取。

总结

这篇文章使用了正确的方法将python字符串转换为enum。首先,我们讨论了什么是Enum以及如何使用它。Enumeration有四个类;Enum, IntEnum, Flag, IntFlag,还有一个帮助器,'auto',和一个装饰器,unique()。枚举类是用于创建枚举常数的基础类。助手'auto'用于用一个合适的值替换Enum成员的实例。而装饰器,unique()用于确保一个名字只分配一个值。在讨论了枚举类之后,我们已经学会了如何创建一个枚举类,以及如何将其用于python字符串到枚举的转换。这篇文章将帮助你理解python字符串到Enum的转换,并指导你在不犯任何错误的情况下制作自己的Enum类。按照指示,开始制作你的用于python字符串到枚举转换的枚举类。