如何为枚举对象实现递增函数?
我正在与戴森风扇合作,并试图编写一个可以提高风扇速度的功能。枚举对象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寻找某种类型的增量或下一个函数,但这些似乎并不存在枚举对象。
因此,让我们用从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
谢谢,我还没有与枚举类型玩,所以这是一个很好的学习经验。
谢谢,让它工作。小记 - 值是字符串像“0001”,所以我必须采取最后一个字符,转换为int,增加1,然后添加“000”回来。除此之外,答案是完美的.. – megashigger
好的答案,有一个投票。 :) –
谢谢。我喜欢原文的答案,因为它适用于所有情况,尤其是这一个。 @marlonmisra我几乎提供了一个答案,但我不确定这是否是问题。即使我喜欢我的解决方案,我也会与其他答案一起去。我很惊讶,这不是一个内置的方法。 –
如何从风扇配置访问当前速度?你可以在你的列表中搜索这个结果的索引,然后增加/减少1或更多 – PRMoureu
另一个重复,但使用不同的技术:['获取下一个枚举器常量/属性](https://*.com/a/35905666/208880) –
就我个人而言,我发现这个问题和答案更简洁,更容易围绕我的头,而不是引用作为副本。 – MikeyE