继承内置集合类型时如何避免mypy报错?
解决mypy检查泛型类继承时的类型参数缺失错误
当用mypy检查以下代码时:
class MySpecialList(list): # 自定义扩展功能
会触发错误:
my_file.py:42: error: Missing type parameters for generic type "list" [type-arg]
这不是mypy的bug,因为list是Python的泛型类,继承泛型类时必须明确类型参数,或者让子类也成为泛型类,以下是两种正确处理方式:
固定元素类型场景:如果你的特殊列表只存储某一种特定类型的元素,直接给父类
list指定具体类型参数即可:class MySpecialList(list[int]): # 自定义功能实现支持任意元素类型场景:如果要让子类和原生
list一样支持任意类型,需要借助泛型工具让子类也成为泛型类:from typing import TypeVar, Generic T = TypeVar('T') class MySpecialList(Generic[T], list[T]): # 自定义功能实现
内容的提问来源于stack exchange,提问作者frans
相关产品推荐
相关产品推荐

