加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-20 11:08:44 所属栏目:Python 来源:网络整理
导读:我想为模块添加( Python3)类型提示(类’module’).输入包不提供一个,而types.ModuleType()是一个返回特定名称的模块对象的构造函数. 例: import typesdef foo(module: types.ModuleType): pass 至少在PyCharm中导致“在types.pyi中找不到参考ModuleType”.
我想为模块添加( Python3)类型提示(类’module’).输入包不提供一个,而types.ModuleType()是一个返回特定名称的模块对象的构造函数.

例:

import types
def foo(module: types.ModuleType):
   pass

至少在PyCharm中导致“在types.pyi中找不到参考ModuleType”.

解决方法

and types.ModuleType() is a constructor.

那没关系. types.ModuleType仍然是对类型的引用,就像str和int一样.不需要通用的Module [typehint]注释,因此types.ModuleType非常适合您在这里使用的内容.

例如,官方Python typeshed project提供了type hint annotation for sys.modules

from types import FrameType,ModuleType,TracebackType

# ...

modules: Dict[str,ModuleType]

不要被这里的名字搞糊涂; types.ModuleType是对模块类型的引用.它不是一个单独的工厂功能或其他东西. CamelCase名称遵循该模块的约定,并且您使用该引用,因为类型对象不能作为内置函数使用.类型模块assigns the value of type(sys) to the name.

如果PyCharm在查找types.ModuleType存根时遇到问题,那么这就是PyCharm本身的问题(一个bug),或者当前捆绑的存根是过时的,或者你使用了一个不完整的类型的存根集.请参阅how to use custom stubs上的PyCharm文档以提供新的一套.

如果这不起作用,可能是PyCharm中处理导出类型提示概念的错误.当前defines the ModuleType type hints in a separate module,当前是imported into the types.pyi stubfile,使用from模块导入名称作为名称语法. PEP 484声明导入的类型提示不是存根的一部分,除非您使用as语法:

Modules and variables imported into the stub are not considered exported from the stub unless the import uses the import ... as ... form or the equivalent from ... import ... as ... form.

可能是PyCharm还没有正确处理这种情况.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读