相关疑难解决方法(0)

如何在不使用try/catch的情况下测试Python Enum中是否存在int值?

使用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 enums

43
推荐指数
9
解决办法
3万
查看次数

覆盖类的__contains__方法

我需要在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)

为什么?我可以以某种方式获得我想要的语法糖吗?

python python-3.x

11
推荐指数
1
解决办法
2693
查看次数

标签 统计

python ×2

enums ×1

python-3.x ×1