我是新来的Python,和我有一个问题,但我不能完全肯定,如果这是我的问题。我有两个文件,user.py和comments.py。在user.py,我做
from comments import Comment
和comments.py我做
from user import User
我的用户负载很好,但是当我打开通向评论的URL,我得到了一个服务器错误。评论出from comments import Comment
解决了这个问题。难道我做错了什么?
我是新来的Python,和我有一个问题,但我不能完全肯定,如果这是我的问题。我有两个文件,user.py和comments.py。在user.py,我做
from comments import Comment
和comments.py我做
from user import User
我的用户负载很好,但是当我打开通向评论的URL,我得到了一个服务器错误。评论出from comments import Comment
解决了这个问题。难道我做错了什么?
是的,你有一个循环导入,并导致许多许多问题。如果您考虑导入时实际发生的情况,则类似于“将代码从文件x复制到此文件中”,但如果您从x复制到y然后从y复制到x,则您已创建一个无限循环,在这种情况下,解释器难以找出哪个模块应该取代或加载哪个模块。但是,如果您的程序架构正确,则不应该有任何问题。你有什么理由让这个通告进口?如果我们更仔细地看待问题,机会实际上并不需要它。
这种循环导入不起作用。导入模块意味着基本上执行它中的语句。 import
语句会在遇到它们时执行,因此至少在其中一个模块中,其他模块尚未初始化,因此导入将失败。
循环依赖被认为是反模式。在某些情况下,它们会以某种方式自然发生,但总的来说,它们是不良设计的标志。
您可以通过将其中一个导入语句移至模块末尾或功能级别来完成此工作,但我建议您不要这些“修复”。
你能告诉我们'comments.py'文件的内容吗? – Tadeck 2012-04-16 22:25:45