如何创建支持多类型参数且兼容mypy的DataFrame泛型类型容器
实现多参数泛型DataFrame且兼容mypy的方案
你可以使用Python 3.11+ 引入的**可变泛型(Variadic Generics)**实现该需求,完全符合Python类型系统设计规范,mypy 0.990及以上版本原生支持该特性,不会触发类型报错:
- 首先导入所需的类型工具:
from typing import Generic, TypeVarTuple, Unpack
- 用
TypeVarTuple声明可变长度的类型参数组,可同时覆盖单参数、多参数的使用场景:
DfTypes = TypeVarTuple("DfTypes")
- 定义
DataFrame泛型类,继承Generic[Unpack[DfTypes]]:
class DataFrame(Generic[Unpack[DfTypes]]): # 此处写入你的DataFrame容器的实际业务逻辑 pass
- 之后就可以按你预期的方式使用,所有类型注解场景均生效:
# 单类型参数 UserId = DataFrame[int] # 多类型参数 UserIdAndName = DataFrame[int, str] # 函数类型注解完全兼容类型检查 def get_name(x: UserId) -> UserIdAndName: # 函数实现逻辑 ...
如果需要兼容Python 3.11之前的版本,可以安装typing-extensions第三方包,从包中导入TypeVarTuple和Unpack使用,mypy同样支持该兼容方案。
内容的提问来源于stack exchange,提问作者Jean Carlo Machado
相关产品推荐
相关产品推荐

