Что определяет порядок переменных типа при сужении универсального типа?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Что определяет порядок переменных типа при сужении универсального типа?

Сообщение Anonymous »

Примечание: этот вопрос относится к Python 3.12+.
Предположим, у меня есть:

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

from typing import Any, TypeVar

import numpy as np

T = TypeVar("T")
U = TypeVar("U")
ListLike = T | list[T] | tuple[T, ...] | np.ndarray[Any, U]
ListLikeStr = ListLike[str, np.object_]
# ListLikeStr should be: str | list[str] | tuple[str, ...] | np.ndarray[Any, np.object_]
Это работает, но тут повезло. Вместо этого я мог бы написать: ListLike[np.object_, str], и тогда я бы получил ListLikeStr как np.object_ | список[np.object_] | кортеж[np.object_, ...] | np.ndarray[Any, str], а это не то, что мне хотелось бы.
В идеале я мог бы сделать что-то вроде: ListLike[T=str, U=np .object_], но это не работает. Так что же определяет порядок при создании экземпляров переменных типа в ListLike? Как ListLike "знает", что T соответствует str, а U - np.object_, когда я пишу ListLike[str, np.object_]< /код>?

Подробнее здесь: https://stackoverflow.com/questions/786 ... neric-type
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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