如何从枚举中获取某个值?

问题描述 投票:0回答:1

我有以下课程:

class YesOrNn(enum.Enum):
  YES = "Y"
  NO = "N"

我收到了诸如

YesOrNo("true")
YesOrNo("false")
,

之类的输入

为了完成这项工作,我想我需要将课程更改为:

class YesOrNn(enum.Enum):
  YES = "true"
  NO = "false"

但是,我也有一种情况,每当变量的值保存为

YesOrNo.YES.value
时,它应该回答
"Y"

我似乎不知道如何实现这一点

python-3.x enums
1个回答
0
投票

您想要

_missing_
方法:

import enum

class YesOrNo(enum.Enum):

    YES = "Y"
    NO = "N"

    @classmethod
    def _missing_(cls, value):
        if value.lower() in ('y', 'yes', 'true', 't'):
            return cls.YES
        elif value.lower() in ('n', 'no', 'false', 'f'):
            return cls.NO
© www.soinside.com 2019 - 2024. All rights reserved.