python – 所有动态语言都有循环导入问题吗?

对于以下Python代码:

first.py

# first.py
from second import Second

class First:
    def __init__(self):
        print 'Second'

second.py

# second.py
from first import First

class Second:
    def __init__(self):
        print 'Second'

创建文件并从shell运行以下命令后:

python first.py

我收到错误:ImportError:无法导入名称第二

像Ruby这样的其他动态语言会出现这种问题吗?我问的原因是因为我在Django项目中遇到了这个问题,其中2个模型相互依赖.我知道可能的解决方案是重新设计项目或按需导入.我只是想知道其他动态语言中的开发人员是否遇到过这个问题.

最佳答案
Python可以在某种程度上处理循环导入.在无法理解的情况下,解决方案在另一种语言中可能仍然没有意义.大多数问题都可以通过首先使用import来解决,然后再引用first.First而不是首先导入First.

如果你可以将共享代码移动到它自己的模块或以某种方式重构循环导入的需要会更好.循环导入始终表示设计问题.

转载注明原文:python – 所有动态语言都有循环导入问题吗? - 代码日志