Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(任何)python模块的类型提示是什么?_Python_Python 3.x_Pycharm_Type Hinting - Fatal编程技术网

(任何)python模块的类型提示是什么?

(任何)python模块的类型提示是什么?,python,python-3.x,pycharm,type-hinting,Python,Python 3.x,Pycharm,Type Hinting,我想为模块(类“module”)添加(Python3)类型提示。typing包不提供,而types.ModuleType()是一个为特定名称返回模块对象的构造函数 例如: import types def foo(module: types.ModuleType): pass 至少在PyCharm中,会导致“在types.pyi中找不到引用ModuleType” 请注意,这并没有回答我的问题,因为它没有解释ModuleType既是一个构造函数也是一个类型,如下所述 和types.Modu

我想为模块(类“module”)添加(Python3)类型提示。
typing
包不提供,而
types.ModuleType()
是一个为特定名称返回模块对象的构造函数

例如:

import types
def foo(module: types.ModuleType):
   pass
至少在PyCharm中,会导致“在types.pyi中找不到引用ModuleType”

请注意,这并没有回答我的问题,因为它没有解释ModuleType既是一个构造函数也是一个类型,如下所述

types.ModuleType()
是一个构造函数

那没关系<代码>类型。ModuleType仍然是对类型的引用,就像
str
int
一样。不需要一般的
Module[typehint]
注释,因此
types.ModuleType就是这里需要使用的

例如,该官员提供以下信息:

不要被这里的名字弄糊涂了<代码>类型。模块类型是对模块类型的引用。它不是一个单独的工厂功能或其他东西。CamelCase名称遵循该模块的约定,您使用该引用是因为type对象不能作为内置对象使用。
类型
模块

如果PyCharm在查找
类型.ModuleType
存根时遇到问题,那么这可能是PyCharm本身的问题(一个bug),或者当前绑定的存根已经过时,或者您使用了一组不完整的存根。请参阅上的PyCharm文档,以提供新的设置

如果这不起作用,可能是PyCharm在处理导出类型提示的概念时出现了错误。当前键入,然后使用
from module import name as name
语法。声明导入的类型提示不是存根的一部分,除非使用
as
语法:

导入存根的模块和变量不会被视为从存根导出,除非导入使用
导入。。。作为…
表格或来自。。。导入。。。作为…
表单

可能是PyCharm尚未正确处理此类案件

types.ModuleType()
是一个构造函数

那没关系<代码>类型。ModuleType仍然是对类型的引用,就像
str
int
一样。不需要一般的
Module[typehint]
注释,因此
types.ModuleType就是这里需要使用的

例如,该官员提供以下信息:

不要被这里的名字弄糊涂了<代码>类型。模块类型是对模块类型的引用。它不是一个单独的工厂功能或其他东西。CamelCase名称遵循该模块的约定,您使用该引用是因为type对象不能作为内置对象使用。
类型
模块

如果PyCharm在查找
类型.ModuleType
存根时遇到问题,那么这可能是PyCharm本身的问题(一个bug),或者当前绑定的存根已经过时,或者您使用了一组不完整的存根。请参阅上的PyCharm文档,以提供新的设置

如果这不起作用,可能是PyCharm在处理导出类型提示的概念时出现了错误。当前键入,然后使用
from module import name as name
语法。声明导入的类型提示不是存根的一部分,除非使用
as
语法:

导入存根的模块和变量不会被视为从存根导出,除非导入使用
导入。。。作为…
表格或来自。。。导入。。。作为…
表单


可能是PyCharm尚未正确处理此类情况。

所以这可能是PyCharm linting问题?@TheDiveO:您显示的错误可能是PyCharm bug或过时的本地存根文件,因为我可以看到,它是。这是PyCharm版本和存根的问题;切换到基于快照的最新PyCharm安装后,警告消失,PyCharm现在可以正确地接受
类型.ModuleType
。非常感谢您帮助我澄清情况:我不知道typeshed基础设施。遗憾的是,在提出严肃问题时,有这么多投反对票的人。@TheDiveO:投票很少,如果有的话,“投反对票”。我注意到,您在添加了PyCharm对使用
typing.ModuleType
的反应的信息后获得了投票,这使得您的问题对本网站的其他访问者更加有用。堆栈溢出的目标是建立一个问题库,这些问题对其他有相同问题的人有用,通过添加更多信息,您可以使其更有用。这里使用投票来表示其他人认为一篇文章对目标有多大帮助。也看到这可能是PyCharm linting问题了吗?@TheDiveO:您显示的错误可能是PyCharm bug,也可能是过时的本地存根文件,因为我可以看到,是的。这是PyCharm版本和存根的问题;切换到基于快照的最新PyCharm安装后,警告消失,PyCharm现在可以正确地接受
类型.ModuleType
。非常感谢您帮助我澄清情况:我不知道typeshed基础设施。遗憾的是,在提出严肃问题时,有这么多投反对票的人。@TheDiveO:投票很少,如果有的话,“投反对票”。我注意到,您在添加了PyCharm对使用
typing.ModuleType
的反应的信息后获得了投票,这使得您的问题对本网站的其他访问者更加有用。堆栈溢出的目标是建立一个问题库,这些问题对其他有相同问题的人有用,通过添加更多信息,您可以使其更有用。这里使用投票来表示其他人认为一篇文章对目标有多大帮助。也看看这是不是回答了你的问题@格雷戈里:不,没有。司机回答了问题
from types import FrameType, ModuleType, TracebackType

# ...

modules: Dict[str, ModuleType]