我在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会抱怨)
答案 0 :(得分:1)
我无法回答你问题的IDE部分,但到目前为止是isinstance
检查 - 是的,这是一种正确的方法(以及最明显的方式)来判断对象是否对你而言收到的是枚举的成员。
另一种不太明显的方式是:
if some_enum_item in SAMPLE_ENUM: