Python 中的类型提示,无需循环导入
问题:
拆分大类时到多个文件中,循环导入可能会阻止类型提示正常工作。具体来说,在 mixin 类中导入“主”类会产生循环依赖,从而阻碍类型检查。
解决方案:
对于 Python 3.4:
使用以下代码结构:
<code class="python"># main.py import mymixin.py class Main(object, MyMixin): def func1(self, xxx): ... # mymixin.py from typing import TYPE_CHECKING if TYPE_CHECKING: from main import Main class MyMixin(object): def func2(self: 'Main', xxx): # Note the string type hint ...</code>
TYPE_CHECKING 常量确保 main.py 的导入仅在类型检查期间进行评估,避免循环导入错误。
对于 Python 3.7 :
Python 3.7 引入了一个更优雅的解决方案:
<code class="python"># main.py import mymixin.py class Main(object, MyMixin): def func1(self, xxx): ... # mymixin.py from __future__ import annotations from typing import TYPE_CHECKING if TYPE_CHECKING: from main import Main class MyMixin(object): def func2(self: Main, xxx): # No need for a string type hint ...</code>
future 导入注释导入启用了字符串类型提示并避免在运行时评估它们。
其他注意事项:
以上是如何避免 Python 类型提示中的循环导入?的详细内容。更多信息请关注PHP中文网其他相关文章!