python 循环引用的解决方法

目录

1、问题描述

2、原因

3、示例

4、解决办法


1、问题描述

编写python代码,运行中出现了:‘most likely due to a circular import ’  这样的报错。

2、原因

循环引用问题,即A引用了B,B又引用了A,造成循环引用的问题。

3、示例

python 循环引用的解决方法_第1张图片

 4、解决办法

1)延迟导入:即将 from xxx import yyy 放到函数或类的内部,从而使其作用域变成局部的。但是这样可能会对性能有些影响。

如下图将import TestA放到函数内部,问题得到解决:

python 循环引用的解决方法_第2张图片

2)直接导入模块名,通过模块调用其中的函数

将 from xxx import yyy 转换成 import xxx; xxx.yyy 的形式 。

python 循环引用的解决方法_第3张图片

修改为直接引入模块,在函数内通过 模块.函数 调用解决 :

python 循环引用的解决方法_第4张图片

 3)重新设计代码结构,将代码和并或者分离

方法1)和2)以上两种方式都是治标不治本的,只能说能够用,但是并不符合规范。

最好的办法应该是从代码布局入手,比如合并或分离循环引用的部分,合并就是将代码放到一个文件里面,自然就不用循环引用了分离的话就是将循环引用的部分放到第三个py文件中,这样也可以。

你可能感兴趣的:(python基础知识,python)