我需要在 Python 中模拟枚举,并通过编写如下类来实现:
class Spam(Enum):
k = 3
EGGS = 0
HAM = 1
BAKEDBEANS = 2
现在我想使用以下语法测试某个常量是否是特定 Enum 派生类的有效选择:
if (x in Foo):
print("seems legit")
因此,我尝试创建一个“枚举”基类,并在其中覆盖如下__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))
但是,在in
类上使用关键字时(如上面的示例),我收到错误:
TypeError: argument of type 'type' is not iterable
为什么?我能以某种方式得到我想要的语法糖吗?