Python可变长度泛型类型

c9qzyr3d  于 2023-06-28  发布在  Python
关注(0)|答案(1)|浏览(136)

是否可以创建访问可变长度参数类型的泛型类型?
基本上,我试图创建一个通用的可观察对象,用户可以通过类型提示定义他们想要接受的参数。
例如:

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)
rggaifut

rggaifut1#

注意:此功能是在Python 3.11中添加的
据我所知,noBut they plan to add itis working on it
引用如下:
PEP 484引入了TypeVar,允许创建使用单个类型参数化的泛型。在这个PEP中,我们引入了TypeVarTuple,它支持使用任意数量的类型进行参数化,也就是说,一个可变类型变量,支持可变泛型。这支持各种各样的用例。特别是,它允许数值计算库(如NumPy和TensorFlow)中的类数组结构的类型使用数组形状进行参数化,从而使静态类型检查器能够捕获使用这些库的代码中与形状相关的错误。

相关问题