在Python 2.7(enum34)中进行枚举类型检查?

时间:2016-02-14 15:46:52

标签: python python-2.7 types enums pycharm

我在Python 2.7中使用带有enum34的枚举,它将Python 3.4的枚举反向移植到2.7。

在我的脚本中,我有一些函数可以获取枚举的一些内容。由于这个可能成为一个多作者项目,我想声明方法显式类型安全:

def someFunction(some_enum_item):
    """
    :param some_enum_item: one entry out of my Enum SAMPLE_ENUM
    :type some_enum_item: SAMPLE_ENUM
    """
    if isinstance(some_enum_item, SAMPLE_ENUM):
        ...
    else:
        ...

所以,我想测试参数,如果它实际上是SAMPLE_ENUM的一个实例,另外我想让IDE识别该函数只接受特定枚举的条目。

isinstance是测试参数是否具有正确类型的正确方法吗?

如何正确建模:type some_enum_item:?目前:type some_enum_item: SAMPLE_ENUM只检查参数是否为类SAMPLE_ENUM而不是此枚举的项(因此,当我将枚举的条目传递给函数时,IDE会抱怨)

1 个答案:

答案 0 :(得分:1)

我无法回答你问题的IDE部分,但到目前为止是isinstance检查 - 是的,这是一种正确的方法(以及最明显的方式)来判断对象是否对你而言收到的是枚举的成员。

另一种不太明显的方式是:

if some_enum_item in SAMPLE_ENUM: