是否可以创建访问可变长度参数类型的泛型类型?
基本上,我试图创建一个通用的可观察对象,用户可以通过类型提示定义他们想要接受的参数。
例如:
Types = TypeVar("Types", var_length=True)
class Obserable(Generic[Types]):
def subscribe(func: Callable[[Types], None]):
...
def notify(*args: Types):
...
def callback(arg1: int, arg2: str, arg3: int) -> None:
...
observer: Observable[int, str, int] = Observable()
observer.subscribe(callback)
observer.notify(1, "hello", 5)
1条答案
按热度按时间rggaifut1#
注意:此功能是在Python 3.11中添加的
据我所知,no。But they plan to add it和is working on it。
引用如下:
PEP 484引入了TypeVar,允许创建使用单个类型参数化的泛型。在这个PEP中,我们引入了TypeVarTuple,它支持使用任意数量的类型进行参数化,也就是说,一个可变类型变量,支持可变泛型。这支持各种各样的用例。特别是,它允许数值计算库(如NumPy和TensorFlow)中的类数组结构的类型使用数组形状进行参数化,从而使静态类型检查器能够捕获使用这些库的代码中与形状相关的错误。