📅  最后修改于: 2023-12-03 15:37:27.272000             🧑  作者: Mango
在 Python 中,枚举是一种表示固定值集合的数据类型。它可以用来代替原始的常量或者硬编码的值,使得代码更加可读和易于理解。
Python 中使用 enum
模块来定义枚举类型。使用 Enum
基类来创建一个新的枚举类型,然后可以定义枚举值。
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
BLUE = 3
在上面的例子中,我们定义了一个名为 Color
的枚举类型,它包含三个值 RED
、GREEN
和 BLUE
。每个值都有一个隐式的整数值与之关联,可以通过 value
属性访问它。
>>> print(Color.RED)
Color.RED
>>> print(Color.RED.value)
1
要迭代一个枚举类型的所有值,可以使用 Enum
基类的 __members__
字典属性。
for color in Color.__members__:
print(color)
输出结果为:
RED
GREEN
BLUE
可以使用 Enum
基类的 __members__
字典属性和 get()
方法,来检查一个字符串是否为有效的枚举值。
color_name = "RED"
if color_name in Color.__members__:
color = Color[color_name]
print(color)
输出结果为:
Color.RED
枚举类型支持比较操作,它们通过 value
属性进行比较。
print(Color.RED == Color.RED)
print(Color.RED == Color.GREEN)
输出结果为:
True
False
可以为枚举值定义属性,例如:
class Color(Enum):
RED = (1, "红色")
GREEN = (2, "绿色")
BLUE = (3, "蓝色")
def __init__(self, value, desc):
self._value_ = value
self.desc = desc
在上面的例子中,我们为每个颜色定义了一个元组,包括颜色的整数值和文字描述。然后我们在 Color
类中定义了构造函数 __init__()
,它将元组中的值设置为枚举值的属性。
>>> print(Color.RED.desc)
红色
在前面的例子中,我们定义的枚举类型,每个值的整数值从 1 开始递增。如果需要自定义枚举值的整数值,可以在定义枚举值时指定它。
from enum import IntEnum
class Color(IntEnum):
RED = 100
GREEN = 200
BLUE = 300
在上面的例子中,我们定义了一个名为 Color
的枚举类型,它包含三个值 RED
、GREEN
和 BLUE
。每个值都有一个整数值与之关联,其中 RED
的值为 100,GREEN
的值为 200,BLUE
的值为 300。
>>> print(Color.RED.value)
100
如果希望自定义枚举值的字符串值,可以在定义枚举值时指定它。
from enum import Enum
class Color(Enum):
RED = "红色"
GREEN = "绿色"
BLUE = "蓝色"
在上面的例子中,我们定义了一个名为 Color
的枚举类型,它包含三个值 RED
、GREEN
和 BLUE
。每个值都有一个字符串值与之关联,其中 RED
的值为 "红色",GREEN
的值为 "绿色",BLUE
的值为 "蓝色"。
>>> print(Color.RED.value)
红色