Python 可变参数泛型接受类

Mar*_*oxx 5 python generics type-hinting variadic-tuple-types

用 Type[C] 注释的变量可以接受类本身的值

如何使用TypeVarTuples 做到这一点 (PEP 646)

from typing import TypeVar, TypeVarTuple

T = TypeVar("T")
Ts = TypeVarTuple("Ts")

def foo(a: T) -> T:
    ...
def bar(a: type[T]) -> T:
    ...
def baz(*a: *Ts) -> tuple[*Ts]:
    ...

a = foo(int) # type[int]
b = bar(int) # int
c = baz(int, str) # tuple[type[int], type[str]]

# What syntax?
def qux(*a: type[*Ts]) -> tuple[*Ts]: 
    ...
d = qux(int, str) # should be tuple[int, str]
Run Code Online (Sandbox Code Playgroud)