Введите псевдоним типа Python `typing.Annotated`Python

Программы на Python
Ответить
Anonymous
 Введите псевдоним типа Python `typing.Annotated`

Сообщение Anonymous »

Предполагаем, что у меня есть некоторый общий тип Foo[T]. Как мне создать псевдоним AFoo[T, x] = Annotated[Foo[T], x], который работает с Pyright, но также позволит мне извлечь метаданные и ввести подсказку x и T< /code>?
Что я пробовал до сих пор:
  • Использование фактического псевдонима типа

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

T = TypeVar("T")
AFoo = Annotated[Foo[T], Any]
  • Использование __class_getitem__

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

T = TypeVar("T")
class AFoo(Generic[T]):
def __class_getitem__(cls, params):
t, x = params
return Annotated[Foo[t], x]
Оба подхода, похоже, не работают, потому что Pyright, похоже, ожидает, что AFoo[str, "bar"] эквивалентен Foo[str, "bar"].

Подробнее здесь: https://stackoverflow.com/questions/793 ... tated-type
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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