0

可能重复:
Python:循环(或循环)导入

我是 Python 新手,遇到了问题,但我不确定这是否是我的问题。我有两个文件,user.py 和comments.py。在 user.py 中,我做

from comments import Comment

在comments.py我做

from user import User

我的用户加载正常,但是当我加载导致评论的 URL 时,出现服务器错误。注释掉from comments import Comment修复的问题。难道我做错了什么?

4

2 回答 2

1

是的,你有一个循环导入,这会导致很多问题。如果您考虑导入时实际发生的情况,这类似于说“将代码从文件 x 复制到此文件”,但如果您从 x 复制到 y,然后从 y 复制到 x,则您已经创建一个无限循环,解释器很难确定在哪种情况下哪个模块应该取代或加载哪个模块。但是,如果您的程序架构正确,那么您不应该有任何程序。您有什么理由进行此循环导入?如果我们更仔细地看待这个问题,您可能根本不需要它。

于 2012-04-16T22:26:13.800 回答
1

这种循环导入是行不通的。导入一个模块实际上意味着执行其中的语句。这些import语句在遇到它们的那一刻就被执行,因此至少在其中一个模块中另一个模块尚未初始化,因此导入将失败。

循环依赖被认为是一种反模式。在某些情况下,它们会以某种方式自然发生,但总的来说,它们是糟糕设计的标志。

您可以通过将导入语句之一移动到模块末尾或函数级别来完成这项工作,但我建议不要使用这些“修复”。

于 2012-04-16T22:27:19.817 回答