首页  >  文章  >  后端开发  >  如何解决 Python 中 Mixin 类的类型提示的循环导入问题?

如何解决 Python 中 Mixin 类的类型提示的循环导入问题?

Linda Hamilton
Linda Hamilton原创
2024-10-23 13:35:30775浏览

How to Resolve Cyclic Import Issues for Type Hinting with Mixin Classes in Python?

无需循环导入的 Python 类型提示

问题:

导入具有循环依赖的模块引入类型提示与 mixin 类结合使用时的运行时异常。

详细信息:

在 Python 3.4 中,一个类被分成两个文件(main.py 和 mymixin) .py),其中 mymixin.py 包含一个 mixin 类,该类继承自 main.py 中的主类(即类 Main(object, MyMixin):)。 MyMixin 方法中的类型提示需要将返回类型指定为 'Main',从而导致循环导入问题。

Python 3.4 解决方案:

绕过循环导入 while类型提示,采用使用前向声明的自定义方法。通过使用“typing”模块中的“TYPE_CHECKING”常量,类型注释块中的导入语句在运行时将被忽略。 'Main' 类型注释也会转换为字符串来转发声明。

Python 3.7 解决方案 (PEP 563):

使用 'from future import 注解的导入语句,所有类型注解都会变成字符串,并在运行时评估期间被跳过,从而使前向声明语法更清晰。

尽管有这些解决方法,使用具有类型提示的 mixins 可能仍然需要重构以确保PyCharm 和 mypy 类型检查都按预期工作。 Mypy 建议创建一个 ABC,主类和 mixin 类都继承自该 ABC。

以上是如何解决 Python 中 Mixin 类的类型提示的循环导入问题?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn