Универсальный тип, который действует как базовый тип.Python

Программы на Python
Anonymous
Универсальный тип, который действует как базовый тип.

Сообщение Anonymous »

Я хочу создать универсальный тип A[T], который действует точно так же, как T, за исключением того, что во время выполнения я могу определить, что на самом деле это тип A[T] и не Т.
Я пробовал

Код: Выделить всё

class A(Generic[T], T):
pass
но, похоже, это не работает, поскольку mypy жалуется, например, что A[str] имеет тип object.
В качестве примера я хочу, чтобы что-то вроде этого проходило проверку типа:

Код: Выделить всё

def f(s: A[str]):
return re.findall('foo|bar', s)
Но при этом каким-то образом можно отличить A[str] от str во время выполнения, когда я получаю переменную этого типа или проверяю сигнатуру функции.< /p>
Есть ли способ сделать это?

Подробнее здесь: https://stackoverflow.com/questions/787 ... -base-type

Вернуться в «Python»