如何解决泛型类型在 stubgen 生成的 .pyi 文件中丢失了它们的 Generic[T, ...] 基类
假设有一个非常简单的类表示一个通用堆栈,因此继承自 Generic[T]
(§1)。
from typing import TypeVar,Generic,List
T = TypeVar('T')
class Stack(Generic[T]): #1
def __init__(self) -> None:
self.items: List[T] = []
def push(self,item: T) -> None:
self.items.append(item)
def pop(self) -> T:
return self.items.pop()
def empty(self) -> bool:
return not self.items
然后让我们为 .pyi
类所在的模块生成一个存根文件 Stack
,例如 stack.py
:
$ stubgen stack.py --output stubs
很明显,Generic[T]
基类被意外剥离 (§2)。同时,items
属性的类型提示被替换为 Any
(§3)。此外,更奇怪的是 push
和 pop
的存根版本仍然分别带有参数和返回值的类型提示 T
( §4 和 §5).
from typing import Any,TypeVar
T = TypeVar('T')
class Stack: #2
items: Any = ... #3
def __init__(self) -> None: ...
def push(self,item: T) -> None: ... #4
def pop(self) -> T: ... #5
def empty(self) -> bool: ...
在生成存根的过程中发生了什么?是否有任何解释可以证明这种行为是正当的?
附言我的 mypy
版本是 0.790。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。