“AttributeError: 'module' object has no attribute [duplicate]”:综合指南
当 Python 模块尝试时会发生此错误访问不存在的属性。在您的具体情况下,错误是“AttributeError:'module'对象没有属性'hi'”。此错误表明您正在导入的模块 (b.py) 没有名为“hi”的函数。
了解相互顶级导入
出现此问题是因为 a.py 和 b.py 之间存在相互顶级导入。通常不建议这样做,因为它可能会导致循环导入和其他问题。
解决问题
要修复此错误并避免相互导入,您可以导入函数内的模块如下:
在 b.py 中:
<code class="python">def cause_a_to_do_something(): import a a.do_something()</code>
在 a.py 中:
<code class="python">import b def hello(): print("hello") print("a.py") print(hello()) b.cause_a_to_do_something()</code>
这样,a.py 就可以安全地导入 b.py 并调用其函数,而不会导致任何错误。
导入优化
虽然看起来效率不高在函数中导入,实际上不是。 Python 会缓存导入的模块,因此导入操作仅在第一次调用该函数时执行。随后的导入是一个快速的操作。
以上是为什么会出现'AttributeError: \'module\' object has no attribute [duplicate]\”?的详细内容。更多信息请关注PHP中文网其他相关文章!