我有两个python模块:
py
import b def hello(): print "hello" print "a.py" print hello() print b.hi()
b.py
import a def hi(): print "hi"
当我跑步时a.py,我得到:
a.py
AttributeError: 'module' object has no attribute 'hi'
错误是什么意思?我如何解决它?
您有相互的顶级导入,这几乎总是一个坏主意。
如果您确实必须在Python中进行相互导入,则可以通过在函数中导入它们来实现:
# In b.py: def cause_a_to_do_something(): import a a.do_something()
现在,a.py可以安全地进行操作import b而不会引起问题。
import b
(乍看之下,cause_a_to_do_something()效率很低,因为import每次调用它都会这样做,但实际上导入工作只是第一次完成。第二次及以后的导入模块是一项快速的操作。 )
cause_a_to_do_something()
import