Пользовательский кортеж generi c с неограниченными параметрами типа - PullRequest
0 голосов
/ 22 января 2020

У меня есть собственный кортеж:

from typing import Generic, TypeVar


T = TypeVar('T')


class MyTuple(tuple, Generic[T]):
    pass

Есть ли простой способ сделать его подписанным (для подсказок типа) с неограниченными параметрами типа?

Например, это нормально:

def foo(t: MyTuple[int]):
    pass

foo(MyTuple((1, )))

Но это:

def foo(t: MyTuple[int, str]):
    pass

foo(MyTuple((1, '1')))

дает мне TypeError: Too many parameters for MyTuple; actual 2, expected 1.

Я хочу, чтобы вести себя как печатать. Кортеж:

from typing import Tuple


def foo(t: Tuple[int, str]):
    pass


foo(tuple((1, '1')))  # OK 
...