使用Python Enum类,有没有办法测试Enum是否包含特定的int值而不使用try/catch?
使用以下课程:
from enum import Enum
class Fruit(Enum):
Apple = 4
Orange = 5
Pear = 6
Run Code Online (Sandbox Code Playgroud)
如何测试值6(返回true)或值7(返回false)?
我需要在Python中模拟枚举,并通过编写类来完成它:
class Spam(Enum):
k = 3
EGGS = 0
HAM = 1
BAKEDBEANS = 2
Run Code Online (Sandbox Code Playgroud)
现在,我想测试某个常量是否是特定Enum派生类的有效选择,使用以下语法:
if (x in Foo):
print("seems legit")
Run Code Online (Sandbox Code Playgroud)
因此,我尝试创建一个"Enum"基类,我在其中覆盖这样的__contains__方法:
class Enum:
"""
Simulates an enum.
"""
k = 0 # overwrite in subclass with number of constants
@classmethod
def __contains__(cls, x):
"""
Test for valid enum constant x:
x in Enum
"""
return (x in range(cls.k))
Run Code Online (Sandbox Code Playgroud)
但是,在in类上使用关键字时(如上例所示),我收到错误:
TypeError: argument of type 'type' is not iterable
Run Code Online (Sandbox Code Playgroud)
为什么?我可以以某种方式获得我想要的语法糖吗?