Python2.7(enum34)中的枚举类型检查?

Python2.7(enum34)中的枚举类型检查?,python,python-2.7,types,enums,pycharm,Python,Python 2.7,Types,Enums,Pycharm,我在Python2.7中使用枚举,它将Python3.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 """ i

我在Python2.7中使用枚举,它将Python3.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识别函数只接受特定ENUM的条目

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


我如何建模
:正确键入一些枚举项:
?目前
:键入一些枚举项:SAMPLE\u enum
只需检查参数是否为类
SAMPLE\u enum
,而不是此枚举项(因此,当我将枚举项传递给函数时,IDE会抱怨)。

我无法回答您问题的IDE部分,但是,
isinstance
检查——是的,这是一种正确的方法(也是最明显的方法)来确定您收到的对象是否是枚举的成员

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

if some_enum_item in SAMPLE_ENUM:

您应该在IDE中对此进行标记,因为问题与IDE直接相关。Python不关心您的docstring中有什么。这是一种在执行实际函数之前检查参数类型的好方法(
isinstance
)吗?@ascenator:是的,
isinstance
是一种检查方法。你是否应该是另一个问题。:)你到底是说我该不该?这是一个糟糕的设计吗?如何检查函数参数的类型?