Как ввести необязательный параметр типа класса annotate ⇐ Python

Программы на Python
Anonymous
Как ввести необязательный параметр типа класса annotate

Сообщение Anonymous »

У меня есть следующий код

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

from typing import TypeVar, Type, overload

T = TypeVar('T')

@overload
def foo(bar: Type[T]) -> T:
...

@overload
def foo(bar: Type[T] | None) -> T | None:
...

def foo(bar: Type[T] | None) -> T | None:
# implementation goes here
...

class Bar:
...

bar = foo(Bar)
bar2 = foo(Bar | None)  # No overload variant of "foo" matches argument type "UnionType"
Как правильно вводить регистр подсказок для bar2?

Я пробовал другие: р>

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

Type[T | None]
, mypy говорит, что сигнатура перегруженной функции 2 никогда не будет сопоставлена: типы параметров сигнатуры 1 такие же или шире
удаление второй перегрузки (что приводит только к Type[T] разрешен), mypy говорит, что вариант перегрузки "foo" не соответствует типу аргумента "UnionType" (это означает, что вторая перегрузка в любом случае неверна)

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

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