我正在将mypy集成到现有的代码库中,其中包含一些此类代码实例:
def foo(bar: str) -> Dict[str, QuuxType]:
# do stuff
return {
bar: some_quuxtype_value,
}
请注意,返回的dict
中的键被设置为输入变量(我知道这似乎有点代码味道,但是考虑到该选项,我稍后会尝试解决。) / p>
在此部分代码上运行mypy
会产生警告:
预计TypedDict键为字符串文字
是否有禁用此警告的选项?快速浏览the mypy
config docs之后,我找不到太多提及。
答案 0 :(得分:0)
尽管您没有提供足够的上下文,但我将假设您尝试使用变量而不是字符串访问TypedDict的键。
在下面的示例中,我有一个示例,其中使用字符串文字访问键是可行的,而在另一个示例中,它将失败(但错误已得到抑制)。
from typing import TypedDict
class Foo(TypedDict):
fruit: str
veggie: str
foo_instance: Foo = {'fruit': 'apple', 'veggie': 'carrot'}
print(foo_instance['fruit']) # will work
# will error unless ignored
for key in foo_instance.keys():
print(foo_instance[key]) # type: ignore
看到这个可爱的游乐场:https://mypy-play.net/?mypy=latest&python=3.8&gist=3513b1411b6795fb2299cf8c0e451b3f
在Github上讨论了这个怪癖:
我们不支持,不。我认为如果给键一个 文字类型,但这似乎没有什么用。
我们绝对无法使用动态版本 我认为是类型检查。最好的举动可能是#类型:忽略