请考虑以下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中的错误吗?如果没有,在这些情况下我应该如何进行?
谢谢!