Python中的枚举enum
Enum是python中用于创建枚举的类,枚举是绑定到唯一,恒定值的一组符号名(成员)。枚举的成员可以通过这些符号主题进行比较,并且枚举本身可以进行迭代。枚举具有以下特征。
枚举是对象的可评估字符串表示形式,也称为repr()。
枚举的名称使用“名称”关键字显示。
使用type()我们可以检查枚举类型。
示例
import enum #使用枚举类创建枚举 class Days(enum.Enum): Sun = 1 Mon = 2 Tue = 3 #将枚举成员打印为字符串 print ("The enum member as a string is : ",end="") print (Days.Mon) #将枚举成员打印为epr print ("he enum member as a repr is : ",end="") print (repr(Days.Sun)) #检查枚举成员类型 print ("The type of enum member is : ",end ="") print (type(Days.Mon)) #打印枚举成员的名称 print ("The name of enum member is : ",end ="") print (Days.Tue.name)
输出结果
运行上面的代码给我们以下结果-
The enum member as a string is : Days.Mon he enum member as a repr is : The type of enum member is : The name of enum member is : Tue
以迭代方式打印枚举
我们可以将枚举打印为可迭代的列表。在下面的代码中,我们使用一个for循环来打印所有枚举成员。
示例
import enum # Using enum class create enumerations class Days(enum.Enum): Sun = 1 Mon = 2 Tue = 3 # printing all enum members using loop print ("The enum members are : ") for weekday in (Days): print(weekday)
输出结果
运行上面的代码给我们以下结果-
The enum members are : Days.Sun Days.Mon Days.Tue
散列枚举
枚举中的成员是可哈希的,因此可以在字典和集合中使用它们。在下面的示例中,我们看到哈希在起作用,并检查哈希是否成功。
示例
import enum # Using enum class create enumerations class Days(enum.Enum): Sun = 1 Mon = 2 # Hashing to create a dictionary Daytype = {} Daytype[Days.Sun] = 'Sun God' Daytype[Days.Mon] = 'Moon God' # Checkign if the hashing is successful print(Daytype =={Days.Sun:'Sun God',Days.Mon:'Moon God'})
输出结果
运行上面的代码给我们以下结果-
True
访问枚举
我们可以使用成员项目的名称或值来访问枚举成员。在下面的示例中,我们首先通过名称访问值,其中我们使用enu的名称作为索引。
示例
import enum # Using enum class create enumerations class Days(enum.Enum): Sun = 1 Mon = 2 print('enum member accessed by name: ') print (Days['Mon']) print('enum member accessed by Value: ') print (Days(1))
输出结果
运行上面的代码给我们以下结果-
enum member accessed by name: Days.Mon enum member accessed by Value: Days.Sun
比较枚举
比较枚举是一个漫长的过程,我们使用比较运算符。
示例
import enum # Using enum class create enumerations class Days(enum.Enum): Sun = 1 Mon = 2 Tue = 1 if Days.Sun == Days.Tue: print('Match') if Days.Mon != Days.Tue: print('No Match')
输出结果
运行上面的代码给我们以下结果-
Match No Match