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 __包含__(自我,其他):返回...