Python2.7(enum34)中的枚举类型检查?
我在Python2.7中使用枚举,它将Python3.4的枚举向后移植到2.7 在我的脚本中,有一些函数可以获取枚举的一些条目。由于这可能成为一个多作者项目,我想显式声明方法类型安全: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
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
是一种检查方法。你是否应该是另一个问题。:)你到底是说我该不该?这是一个糟糕的设计吗?如何检查函数参数的类型?