我如何告诉PyCharm用户定义的函数类型的python字典是可以的?

弗兰科夫

以下代码在python 3.7.4中运行良好,没有任何警告。

from typing import Any, Dict, NewType

DocType = NewType('DocType', Dict[str, Any])

def print_doc(doc: DocType):
    for key, val in doc.items():
        print("key %s val %s" % (key, val))

print_doc({'a': 1, 'b': '2'})

但是,在PyCharm(社区2019.2)中,我在最后一行收到警告:

Expected type 'DocType', got 'Dict[str, Union[int, str]]' instead.

我如何通知PyCharm一切正常?

PyCharm提供的选项是禁止对该行的检查,并完全关闭类型检查。看起来都不是太好。

编辑:如果我没有定义自己的DocType,而是放入Dict[str, Any]函数原型中,则警告消失。我想这是一种解决方法。

亚历山大·穆利亚(Oleksandr Muliar)

NewType将您标记DocType为的子类型dict,并且由于您要传递字典(是的超类型DocType),因此PyCharm会将其正确标记为错误。

您可以将变量实例化为DocType

from typing import Any, Dict, NewType

DocType = NewType('DocType', Dict[str, Any])

def print_doc(doc: DocType) -> None:
    for key, val in doc.items():
        print("key %s val %s" % (key, val))


print_doc(DocType({'a': 1, 'b': '2'}))

或创建类型别名

from typing import Any, Dict, NewType

DocType = Dict[str, Any]

def print_doc(doc: DocType) -> None:
    for key, val in doc.items():
        print("key %s val %s" % (key, val))


print_doc({'a': 1, 'b': '2'})

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我可以告诉PhpStorm函数的返回类型是什么吗?

我可以从用户那里获取字符串,如果它的定义在字典中,在 python 中打印定义?

如何将字典存储在SQLServer用户定义类型中?

函数可以在处理中返回用户定义的类型吗?

我可以告诉TypeScript泛型类型具有构造函数吗?

如何在C语言中调用另一个用户定义函数中的用户定义函数?这个程序有错误...请告诉我那是什么?

python /我可以将定义的字典传递给** kwargs吗?

我的discord bot中有slap命令,用python编写。有人可以告诉我如何制作机会类型 ID 而不是 ping 吗?

如何使我的用户定义函数成为内置函数?

如何告诉VSCode函数参数的类型(JavaScript)

如何告诉班级用户我的构造函数期望的有效值

我可以告诉C ++编译器本身如何进行任意类型转换吗?

如何告诉 TypeScript 我的对象的类型?

如何在函数中使用用户定义类型?

如何告诉UI5在哪里可以找到我的自定义模块?

用户定义的对象作为Python中函数指定的参数类型

如何告诉TypeScript我的属性可以是布尔值还是具有特定签名的函数?

有人可以告诉我DateTimeZone :: getOffset PHP函数如何工作吗?

如何让用户使用 python 中的输入函数调用字典

我如何要求类型通过用户定义的文字?

Python - 用户定义的函数

我们可以在python程序中多次使用带有某些参数的用户定义函数吗?

我可以告诉我是否实现了C ++虚函数

我如何在python中接受用户的嵌套字典

我应该如何让用户定义库中的函数?

如果我在内部重新定义字典,该如何在函数外部更改字典?

我不理解Python中的用户定义函数

如何告诉python传递给函数的意外变量类型在上下文中是正确的

我可以在用户定义的函数中使用 ggplot() 在单个图中绘制多个函数曲线吗?