mypy抱怨在python中获取抽象枚举的长度

时间:2018-09-06 15:02:48

标签: python abstract-class mypy

请考虑以下MWE:

from enum import Enum

class IMeasurements(Enum):
  pass

class _MYMeasurements(IMeasurements):
    FIRST = 0
    SECOND = 1

class MYParser():
    def __init__(self):
        pass

    @staticmethod
    def get_measurement_enum():
        return _MYMeasurements

parser = MYParser()

weld_measurements_enum: IMeasurements = parser.get_measurement_enum()

n_measures = len(weld_measurements_enum)

print(n_measures)

我正在研究的项目在多个级别上使用抽象,以使事物保持模块化并强制实现遵守某些接口。值得注意的是,枚举IMeasurements本身没有成员,但是扩展名_MyMeasurements却是成员。

现在此代码有效,Python返回期望值。但是在检查此代码中是否使用mypy键入错误时,我得到了错误消息:

Argument 1 to "len" has incompatible type "IMeasurements"; expected "Sized"

我尝试的解决方案之一是为EnumMeta使用Enum代替IMeasurements,但是尽管这使mypy保持沉默,但会导致另一个错误:TypeError: object of type 'type' has no len()。 / p>

这是mypy中的错误吗?如果没有,在这些情况下我应该如何进行?

谢谢!

0 个答案:

没有答案