Python初始化:循环导入(再次…)

Python初始化:循环导入(再次…),python,python-3.x,python-import,python-3.6,Python,Python 3.x,Python Import,Python 3.6,我想从它的实现中分离一些抽象代码,并在\uuu init\uuu.py中将实际实现链接为import 我的“model/\uuuu init\uuuu.py”如下所示: from.estimator导入AbstractEstimator #链路缺省估计器的实现 从impl.tf导入tf_估计量作为估计量 然而,TF_估计器是'model.AbstractEstimator'的一个子类: 来自模型导入AbstractEstimator 类TF_估计量(抽象估计量): ... 如何解决此循环依赖

我想从它的实现中分离一些抽象代码,并在
\uuu init\uuu.py
中将实际实现链接为import

我的
“model/\uuuu init\uuuu.py”
如下所示:

from.estimator导入AbstractEstimator
#链路缺省估计器的实现
从impl.tf导入tf_估计量作为估计量
然而,TF_估计器是
'model.AbstractEstimator'
的一个子类:

来自模型导入AbstractEstimator
类TF_估计量(抽象估计量):
...
如何解决此循环依赖关系? 在
'model/\uuuu init\uuuu.py'
中是否有某种方法可以“忽略”导入
'TF\u估计器'


我的目标是,我可以从model import Estimator运行
,并最终获得
“TF\U Estimator”

由于@chepner:
简单地使用model.estimator中的
,在TF_估计器中导入AbstractEstimator
;这跳过了加载
'model/\uuu init\uuuu.py'

我相信我刚才问过自己一个类似的问题。我的想法是关于异常,但核心问题是构造一个包以避免循环导入。这有帮助吗
model.AbstractEstimator
只是
.estimator.AbstractEstimator
的另一个名称。你为什么不能用它来代替呢?
模型
名称空间应被视为公共接口;您的实现不一定要使用它。@chepner:OMG,我没有看到明显的解决方案。。。谢谢@奥利维尔:谢谢你的指点。我会记住这是一个更普遍的解决方案。