首页 > 后端开发 > Python教程 > 为什么会出现'AttributeError: \'module\' object has no attribute [duplicate]\”?

为什么会出现'AttributeError: \'module\' object has no attribute [duplicate]\”?

Mary-Kate Olsen
发布: 2024-10-20 12:55:02
原创
821 人浏览过

Why does

“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中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板