📅  最后修改于: 2023-12-03 15:34:30.774000             🧑  作者: Mango
Python枚举模块(enum
)提供了一种创建枚举类的方式,枚举成员是唯一的、不可变的、可比较的,可以使用枚举成员访问枚举常量。枚举可以提高代码可读性和可维护性。
Python 3.4及以上版本自带enum
模块,无需安装。如果使用的是Python 2.x版本,可以使用enum34
模块。
安装命令:pip install enum34
from enum import Enum
class 枚举类名(Enum):
枚举成员1 = 值1
枚举成员2 = 值2
…
枚举成员n = 值n
枚举成员值可以是任意类型(一般是字符串或整数)。
from enum import Enum
class VIP(Enum):
BASIC = "Basic"
SILVER = "Silver"
GOLD = "Gold"
PLATINUM = "Platinum"
DIAMOND = 10
print(VIP.BASIC)
print(VIP.PLATINUM)
print(VIP.DIAMOND.value)
for v in VIP:
print(v)
输出结果:
VIP.BASIC
VIP.PLATINUM
10
VIP.BASIC
VIP.SILVER
VIP.GOLD
VIP.PLATINUM
VIP.DIAMOND
__len__
获取枚举成员数量。
from enum import Enum
class VIP(Enum):
BASIC = "Basic"
SILVER = "Silver"
GOLD = "Gold"
PLATINUM = "Platinum"
DIAMOND = 10
print(len(VIP))
输出结果:
5
__contains__
判断枚举是否包含某个成员。
from enum import Enum
class VIP(Enum):
BASIC = "Basic"
SILVER = "Silver"
GOLD = "Gold"
PLATINUM = "Platinum"
DIAMOND = 10
print(VIP.BASIC in VIP)
print("Basic" in VIP)
输出结果:
True
False
__getitem__
通过枚举成员值获取枚举成员。
from enum import Enum
class VIP(Enum):
BASIC = "Basic"
SILVER = "Silver"
GOLD = "Gold"
PLATINUM = "Platinum"
DIAMOND = 10
print(VIP["BASIC"])
print(VIP(10))
输出结果:
VIP.BASIC
VIP.DIAMOND
枚举类可以继承自Enum
,并可以自定义方法和属性,具有更大的灵活性。
from enum import Enum
class VIP(Enum):
BASIC = "Basic"
SILVER = "Silver"
GOLD = "Gold"
PLATINUM = "Platinum"
DIAMOND = 10
def describe(self):
return self.name, self.value
@property
def points(self):
if self.value == "Basic":
return 1
elif self.value == "Silver":
return 3
elif self.value == "Gold":
return 5
elif self.value == "Platinum":
return 7
elif self.value == 10:
return 10
else:
return 0
print(VIP.DIAMOND.describe())
print(VIP.GOLD.points)
输出结果:
('DIAMOND', 10)
5
Python枚举模块enum
提供了一种创建枚举类的方式,枚举成员是唯一的、不可变的、可比较的,可以提高代码可读性和可维护性。枚举成员值可以是任意类型,枚举类可以自定义方法和属性,具有更大的灵活性。