______和Python3.8枚举

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

SETUP:Python 3.8.2;一些带有重载__contains__()函数的枚举类。

  from enum import Enum

  class Something(Enum):
      A = 1
      def __contains__(self, Other):
          return Other in self.__class__.__members__.keys()

TEST 1:使用枚举本身的值。

  print("A:", Something.A in Something)

工作正常(此处结果= A: True)。

TEST 2:使用非枚举值。

  print("1:", 1 in Something)

失败,即例外

  TypeError: unsupported operand type(s) for 'in': 'int' and 'EnumMeta'

问题

如何实现in功能,其中左操作数可以是任何值?也就是说,应该可以写出类似于

if anything in Something:
    ...

无需检查anything的类型。

SETUP:Python 3.8.2;一些带有重载__contains __()函数的枚举类。从枚举导入Enum类Something(Enum):A = 1 def __包含__(自我,其他):返回...

python enums
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.