Почему DICT [STR, STR] назначается для картирования [STR | int, str] (тип ключа отображения не коварит)?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему DICT [STR, STR] назначается для картирования [STR | int, str] (тип ключа отображения не коварит)?

Сообщение Anonymous »

Учитывая этот код: < /p>

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

from collections.abc import Mapping

def my_fn(m: Mapping[str | int, str]):
print(m)

d = {"a": "b"}
my_fn(d)
Mypy 1.16.0 и Pyright 1.1.400 Отчет о том, что неверно назначить d аргументу m . Например, выходы Pyright :

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

error: Argument of type "dict[str, str]" cannot be assigned to parameter "m" of type "Mapping[str | int, str]" in function "my_fn"
  "dict[str, str]" is not assignable to "Mapping[str | int, str]"
    Type parameter "_KT@Mapping" is invariant, but "str" is not the same as "str | int" (reportArgumentType)
< /code>
Почему это так? Я понимаю, почему назначение DICT [str, str] 
mutablemapping [str | int, str] было бы плохим (Callee может вставить int клавиши в DICT ), но отображение неизбежно.

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

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

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

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

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

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

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