枚举类简介
在 Python 中,枚举用于表示一组有限的可能性。
在枚举中,每个可能性都是一个常量名称。为了引用这些常量,您需要使用枚举器名称。如果尝试引用不存在的值,则会引发 AssertionError。
Python 中的枚举器实现由 enum
模块提供。 您可以使用枚举器为您的程序中的常量定义有意义的名称。
示例:
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
BLUE = 3
print(Color.RED)
print(repr(Color.RED))
上述代码中,我们定义了一个名为 Color 的枚举类。该枚举类包含三个值(RED、GREEN 和 BLUE)及其与之相关联的、自动分配的整数常量。
输出:
Color.RED
<Color.RED: 1>
Python 枚举类 自定义状态
在 Python 的枚举类中,我们可以根据需要定义与状态相关联的符号名称。
看一下下面的示例代码:
from enum import Enum
class State(Enum):
DISABLED = 0
READY = 1
RUNNING = 2
PAUSED = 3
class MyClass:
def __init__(self):
self.state = State.READY
def run(self):
if self.state is State.READY:
self.state = State.RUNNING
print('Running')
def pause(self):
if self.state is State.RUNNING:
self.state = State.PAUSED
print('Paused')
def resume(self):
if self.state is State.PAUSED:
self.state = State.RUNNING
print('Running')
def stop(self):
if self.state is State.RUNNING or self.state is State.PAUSED:
self.state = State.DISABLED
print('Stopped')
上述代码中,我们定义了一个名为 State
的枚举类,它表示某个操作所处的状态。在 MyClass
类的构造函数中,我们将状态设置为 State.READY
。
子标题
接下来,我们定义了四个方法,用于模拟某个操作的运行:
run: 开始操作。 如果对象已处于就绪状态,则更改状态为运行中,并打印“运行中”。
pause: 暂停操作。 如果对象正在运行,则更改状态为已暂停,并打印“已暂停”。
resume: 恢复操作。 如果对象已暂停,则更改状态为运行中,并打印“运行中”。
stop: 停止操作。 如果对象处于运行中或暂停状态,则更改状态为禁用,并打印“已停止”。
通过在每个方法中使用 if 语句来检查对象的状态,我们确保仅在允许的状态(即:运行中,已暂停或已就绪)下调用操作。
测试
我们来测试这个 MyClass 类,运行以下代码:
mc = MyClass()
mc.run() # Running
mc.pause() # Paused
mc.resume() # Running
mc.stop() # Stopped
输出:
Running
Paused
Running
Stopped
这个示例代码非常简单,但它演示了枚举类的用途。 如果您有一个状态机或例如状态计算机等系统,则可以使用枚举旋钮组织您的代码。