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

问题描述:

我正在与戴森风扇合作,并试图编写一个可以提高风扇速度的功能。枚举对象FanSpeed具有以下成员。当I [在风扇速度打印(ⅰ),其中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 /将枚举对象作为一个字符串处理,并用一个较高的数字(字符类型)替换最后一个字符。尽管这种方法不适用于枚举对象。

2寻找某种类型的增量或下一个函数,但这些似乎并不存在枚举对象。

+0

如何从风扇配置访问当前速度?你可以在你的列表中搜索这个结果的索引,然后增加/减少1或更多 – PRMoureu

+0

另一个重复,但使用不同的技术:['获取下一个枚举器常量/属性](https://*.com/a/35905666/208880) –

+1

就我个人而言,我发现这个问题和答案更简洁,更容易围绕我的头,而不是引用作为副本。 – MikeyE

因此,让我们用从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 

谢谢,我还没有与枚举类型玩,所以这是一个很好的学习经验。

+0

谢谢,让它工作。小记 - 值是字符串像“0001”,所以我必须采取最后一个字符,转换为int,增加1,然后添加“000”回来。除此之外,答案是完美的.. – megashigger

+0

好的答案,有一个投票。 :) –

+0

谢谢。我喜欢原文的答案,因为它适用于所有情况,尤其是这一个。 @marlonmisra我几乎提供了一个答案,但我不确定这是否是问题。即使我喜欢我的解决方案,我也会与其他答案一起去。我很惊讶,这不是一个内置的方法。 –