如何解决如何在 Python 中使用文字值作为泛型参数?
我试图提示一个固定长度的 bytes
对象:
data: FixedLengthBytes[100]
但 mypy 抱怨:Invalid type: try using Literal[100] instead?
。因为它要求括号之间的值是一个类型,而不是 int 字面量。
它可能与 typing.Annotated
或 types.GenericAlias
相关。以下代码在运行时完美运行,但无法通过类型检查:
class FixedLengthBytes:
def __class_getitem__(cls,length: int) -> Type[bytes]:
return Annotated[bytes,FixedLength(length)]
可以通过直接使用 Annotated
来解决此特定需求,但它很冗长且封装较少。
data: Annotated[bytes,FixedLength(100)]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。