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

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

Сообщение 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" (это означает, что вторая перегрузка в любом случае неверна)

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