栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

没有循环导入的Python类型提示

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

没有循环导入的Python类型提示

恐怕通常没有一种非常优雅的方式来处理导入周期。您的选择是重新设计代码以消除循环依赖性,或者如果不可行,请执行以下操作:

# some_file.pyfrom typing import TYPE_CHECKINGif TYPE_CHECKING:    from main import Mainclass MyObject(object):    def func2(self, some_param: 'Main'):        ...

TYPE_CHECKING
常量始终
False
在运行时运行,因此不会评估导入,但是mypy(和其他类型检查工具)将评估该块的内容。

我们还需要将

Main
类型注释放入字符串中,以有效地向前声明它,因为该
Main
符号在运行时不可用。

如果您使用的是Python 3.7+,我们至少可以通过利用PEP
563
来跳过必须提供显式字符串注释的情况:

# some_file.pyfrom __future__ import annotationsfrom typing import TYPE_CHECKINGif TYPE_CHECKING:    from main import Mainclass MyObject(object):    # Hooray, cleaner annotations!    def func2(self, some_param: Main):        ...

from __future__ import annotations
进口将使 所有 类型提示弦而跳过评估他们。这可以使我们的代码更符合人体工程学。

综上所述,与mypy一起使用mixins可能会需要比您现在更多的结构。Mypy建议一种基本上就是

deceze
所描述的方法-
创建一个ABC,您的类
Main
MyMixin
类都继承。如果您最终需要做一些类似的事情以使Pycharm的检查器满意,我不会感到惊讶。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/637952.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号