小编典典

AttributeError:“模块”对象没有属性

python

我有两个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,我得到:

AttributeError: 'module' object has no attribute 'hi'

错误是什么意思?我如何解决它?


阅读 211

收藏
2020-12-20

共1个答案

小编典典

您有相互的顶级导入,这几乎总是一个坏主意。

如果您确实必须在Python中进行相互导入,则可以通过在函数中导入它们来实现:

# In b.py:
def cause_a_to_do_something():
    import a
    a.do_something()

现在,a.py可以安全地进行操作import b而不会引起问题。

(乍看之下,cause_a_to_do_something()效率很低,因为import每次调用它都会这样做,但实际上导入工作只是第一次完成。第二次及以后的导入模块是一项快速的操作。

2020-12-20