Я считаю, что правильный совет:
Код: Выделить всё
Json: TypeAlias = dict[str, "Json"] | list["Json"] | str | int | float | bool | None
Я считаю, что этот совет часто не работает. Следующий пример кода воссоздает проблему.
Код: Выделить всё
import requests
from typing_extensions import TypeAlias
Json: TypeAlias = dict[str, "Json"] | list["Json"] | str | int | float | bool | None
res: requests.models.Response = requests.get(
"https://randomuser.me/api/?results=5&nat=gb"
)
data: Json = res.json()
results: Json = data["results"]
Ни один вариант перегрузки "getitem" из "list" не соответствует типу аргумента "str" [call-overload]
Возможные варианты перегрузки:
def getitem(self, SupportsIndex, /) -> Json
def getitem(self, срез, /) -> list[Json]
Значение типа "dict[str, Json] | список[Json] | ул | интервал | плавать | бул | «Нет» не индексируется [index]
Вопрос
Что я делаю не так? Мне удалось найти эту проблему на GitHub, которая вполне может содержать решение, но если да, то я еще недостаточно хорошо разбираюсь в типах, чтобы ее увидеть.
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/767 ... -in-python