并且types.ModuleType()
是构造函数。
没关系 types.ModuleType
就像str
和int
are一样,仍然是对类型的引用。不需要 通用Module[typehint]
注释,因此types.ModuleType
您在这里使用的注释也是如此。
例如,官方的Python排版项目为以下项提供了类型提示注释sys.modules
:
from types import FrameType, ModuleType, TracebackType
# ...
modules: Dict[str, ModuleType]
不要被这里的名字弄糊涂了;types.ModuleType
是对模块类型的引用。它不是单独的工厂功能或其他功能。CamelCase名称遵循该模块的约定,您可以使用该引用,因为类型对象不能作为内置对象使用。该types
模块的值赋给type(sys)
的名称。
如果PyCharm在查找types.ModuleType
存根时遇到问题,则可能是PyCharm本身存在问题(错误),或者当前捆绑的存根已过时,或者您使用了不完整的分页集。有关如何使用自定义存根提供新集合的信息,请参阅PyCharm文档。
如果这不起作用,则可能是PyCharm中处理 导出 类型提示概念的错误。Typeshed当前在单独的模块中定义ModuleType
类型提示,然后使用语法将其导入到types.pyi
存根文件中from module import name as name
。PEP 484指出, 除非 使用以下as
语法,否则 导入的类型提示不属于存根。
除非导入使用import ... as ...
表格或等效from ... import ... as ...
表格,否则导入到存根中的模块和变量不视为已从存根中导出。
PyCharm可能尚未正确处理此类情况。