📜  Python枚举模块enum

📅  最后修改于: 2020-04-15 10:14:22             🧑  作者: Mango

Python中的枚举是通过使用名为“ enum ” 的模块实现的。枚举是使用创建的。枚举具有与之关联的名称和值
枚举的属性:
1.枚举可以显示为stringrepr
2.可以使用type()检查枚举的类型。
3. “ name “关键字用于显示枚举成员的名称。

# 演示枚举的Python代码导入枚举的枚举
import enum
# 使用类创建枚举
class Animal(enum.Enum):
    dog = 1
    cat = 2
    lion = 3
# 将枚举成员打印为字符串
print ("枚举成员的字符串表示形式是: ",end="")
print (Animal.dog)
# 将枚举成员打印为repr
print ("枚举成员的repr表示为 : ",end="")
print (repr(Animal.dog))
# 使用type()打印枚举成员的类型
print ("枚举成员的类型是: ",end ="")
print (type(Animal.dog))
# 使用“名称"关键字打印枚举成员的名称
print ("枚举成员的名称是 : ",end ="")
print (Animal.dog.name)

输出:

枚举成员的字符串表示形式是 : Animal.dog
枚举成员的repr表示为 : 
枚举成员的类型是 : 
枚举成员的名称是 : dog

4.枚举是可迭代的。可以使用循环对其进行迭代
5.枚举支持哈希。枚举可用于字典集合中。

# Python代码演示枚举迭代和哈希
# 导入枚举以进行枚举
import enum
# 使用类创建枚举
class Animal(enum.Enum):
    dog = 1
    cat = 2
    lion = 3
# 使用循环打印所有枚举成员
print ("所有的枚举值是 : ")
for Anim in (Animal):
    print(Anim)
# 哈希枚举成员作为字典
di = {}
di[Animal.dog] = 'bark'
di[Animal.lion] = 'roar'
# 检查枚举值是否成功哈希
if di=={Animal.dog : 'bark',Animal.lion : 'roar'}:
      print ("枚举被哈希")
else: print ("枚举未哈希")

输出:

所有的枚举值是 :
Animal.dog
Animal.cat
Animal.lion
枚举被哈希

访问模式:枚举成员可以通过两种方式访问
1.按值:在此方法中,将传递枚举成员的值。
2.按名称:在此方法中,将传递枚举成员的名称。
也可以使用“ name “或“ value “关键字访问单独的值或名称。

比较:枚举支持两种类型的比较
1.身份:使用关键字“  “和“ 不是 “对它们进行检查。
2.等价: 还支持“ == “和“ != “类型的等价比较。

# 演示枚举的Python代码
# 访问和比较
# 导入枚举以进行枚举
import enum
# 使用类创建枚举
class Animal(enum.Enum):
    dog = 1
    cat = 2
    lion = 3
# 使用值访问枚举成员
print ("与值2相关联的枚举成员为 : ",end="")
print (Animal(2))
# 使用名称访问枚举成员
print ("与lion名称关联的枚举成员为 : ",end="")
print (Animal['lion'])
# 分配枚举成员
mem = Animal.dog
# 显示值
print ("与狗相关的值 : ",end="")
print (mem.value)
# 显示名称
print ("与狗相关的名字是 : ",end="")
print (mem.name)
# 使用“ is"进行比较
if Animal.dog is Animal.cat:
       print ("狗和猫是同一只动物")
else : print ("狗和猫是不同的动物")
# 使用"!="进行比较
if Animal.lion != Animal.cat:
       print ("狮子和猫不同")
else : print ("狮子和猫都一样")

输出:

与值2相关联的枚举成员为 : Animal.cat
与lion名称关联的枚举成员为 : Animal.lion
与狗相关的值 : 1
与狗相关的名字是 : dog
狗和猫是不同的动物
狮子和猫不同