У меня есть словарь конфигурации, который я загружаю со значениями в иерархии вызовов инициализации dunder, каждый вызов создает часть конфигурации. Пытаясь добавить печатание к этому, я получил странное поведение (или, возможно, я делаю что-то не так). Поведение, которое я получаю, согласуется со словарем, выдающим типы, которые были вставлены в него только в его первом объявлении, обновление расширений и добавление ключей, по-видимому, не изменяет типы, которые словарь объявляет по возможности при доступе к нему, это просто код, который я написал для иллюстрации проблемы:
import re
def foo(a: int = 1, b: str = "b"):
d = {"a": a}
d.update({"b": b})
print(re.findall(d["b"], "baba"))
foo()
Код, конечно, работает и выводит ['b', 'b']
(без каламбура), но мой пикарм выдает два предупреждения:
- в строке обновления:
Unexpected type(s):<br>(Dict[str, str])<br>Possible types:<br>(Mapping[str, int])<br>(Iterable[Tuple[str, int]])
- в строке поиска:
Expected type 'Union[bytes, str, __Regex]', got 'int' instead
Мои вопросы: является ли мой анализ причины этой истины (диктует ли его типизацию при создании экземпляра)? и есть ли питонный способ исправить эти предупреждения?