mypy: какой тип я должен использовать для dict со строковыми и целочисленными значениями - PullRequest
0 голосов
/ 17 апреля 2019

при запуске mypy script.py --strict, приведенный ниже код выдаст ошибку Argument 1 to "test" has incompatible type "Dict[str, object]"; expected "Dict[str, Union[str, int]]"

from typing import Union, Dict, Mapping

def test(person: Dict[str, Union[str, int]]) -> None:
    pass


person = dict(
    name='john',
    age=10,
)
test(person)

EDIT: Я понял, что один из способов решить эту проблему - использовать TypedDict, как показано ниже:

from mypy_extensions import TypedDict

PersonDict = TypedDict('PersonDict', {
    'name': str,
    'age': int,
})

...

person: PersonDict = dict(
    name='john',
    age=10,
)
test(person)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...