我正在将mypy集成到现有的代码库中,其中包含几个此类代码的实例:
def foo(bar: str) -> Dict[str, QuuxType]:
# do stuff
return {
bar: some_quuxtype_value,
}
请注意,返回的dict
中的键被设置为输入变量(我知道,这看起来有点像代码味道,但考虑到这个选项,我稍后会尝试解决)。
在这部分代码上运行mypy
会产生一个警告:
预期的TypedDict键为字符串文本
是否有禁用此警告的选项?在快速扫描配置文档之后,我找不到多少提到它的地方。
发布于 2020-01-03 18:17:19
尽管您没有给出足够的上下文,但我将假设您试图使用变量而不是字符串访问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上讨论过。
我们不支持,不。我认为,如果给key一个文字类型,它确实有效,但这似乎不太有用。 我认为,我们肯定无法对动态版本进行有用的排版。最好的移动可能是#类型:忽略
https://stackoverflow.com/questions/59340593
复制相似问题