如何为Python枚举类设置未枚举值的默认返回值?
实现枚举类的未知值 fallback 逻辑
你可以通过重写枚举类的_missing_特殊方法来实现这个需求,这是Python枚举模块专门为处理未定义值场景提供的钩子方法。
修改后的代码如下:
import enum class Version(enum.IntEnum): VERSION_1 = 1 VERSION_2 = 2 VERSION_UNKNOWN = 99 @classmethod def _missing_(cls, value): # 当传入的值不在枚举成员中时,返回VERSION_UNKNOWN return cls.VERSION_UNKNOWN
测试你给出的代码:
e = Version(3) assert e == Version.VERSION_UNKNOWN
这段代码现在可以正常运行,不会再抛出ValueError异常,而是直接返回VERSION_UNKNOWN成员。
注意:_missing_方法只会在通过值初始化枚举时触发,如果是通过名称(比如Version("VERSION_3"))传入不存在的内容,还是会抛出异常。如果需要处理这种场景,可以额外重写__getitem__或者__call__方法,但你的需求仅涉及值初始化,上面的方案已经足够。
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

