【发布时间】:2022-01-07 17:23:12
【问题描述】:
在我的枚举中,我定义了一个类方法,用于将给定值强制为枚举成员。给定的值可能已经是 Enum 的一个实例,或者它可能是一个包含 Enum 值的字符串。 为了确定它是否需要转换,我检查参数是否是类的实例,如果不是,则仅将其传递给 int()。此时——根据参数“item”的类型提示——它必须是一个字符串。
类如下所示:
T = TypeVar('T', bound='MyEnum')
class MyEnum(Enum):
A = 0
B = 1
@classmethod
def coerce(cls: Type[T], item: Union[int, T]) -> T:
return item if isinstance(item, cls) else cls(int(item))
mypy 失败:
错误:“int”的参数 1 具有不兼容的类型“Union[str, T]”; 预期“联合[str,字节,SupportsInt,SupportsIndex, _SupportsTrunc]"
为什么?
【问题讨论】: