如何为枚举对象实现增量函数?

时间:2017-07-25 06:05:13

标签: python enums

我正在使用Dyson粉丝,我正在尝试编写一个可以提高风扇速度的功能。枚举对象FanSpeed具有以下成员。当我在FanSpeed中执行[print(i)for i]时,我得到:

FanSpeed.FAN_SPEED_1
FanSpeed.FAN_SPEED_2
FanSpeed.FAN_SPEED_3
FanSpeed.FAN_SPEED_4
FanSpeed.FAN_SPEED_5
FanSpeed.FAN_SPEED_6
FanSpeed.FAN_SPEED_7
FanSpeed.FAN_SPEED_8
FanSpeed.FAN_SPEED_9
FanSpeed.FAN_SPEED_10

因此第一个枚举对象(上面)的名称为FAN_SPEED_1(FanSpeed.FAN_SPEED_1.name),其值为“0001”(FanSpeed.FAN_SPEED_1.value),依此类推。

设定速度的功能(本例中为5):

fan.set_configuration(fan_mode=FanMode.FAN, fan_speed=FanSpeed.FAN_SPEED_5)

我无法弄清楚如何编写一个获取当前速度的函数,然后将其设置为更高一级。我试过了:

1 /将enum对象作为一个字符串处理,并用一个更高的数字(字符类型)替换最后一个字符。但这种方法对枚举对象不起作用。

2 /寻找某种增量或下一个函数,但枚举对象似乎不存在。

1 个答案:

答案 0 :(得分:5)

让我们使用Python文档中的示例:

from enum import Enum
class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3

current_color = Color.RED
new_color = Color(current_color.value + 1)
>>> new_color == Color.GREEN
True

谢谢,我还没玩过Enum类型,所以这是一次很好的学习经历。