python - 为什么即使导入、拼写和文件位置正确,我仍会收到 AttributeError?

标签 python python-3.x attributeerror

  1. 我正在使用 PyCharm
  2. 所有文件都在'venv'目录中

    • 文夫
    • NoteFunction.py
    • NoteMainApp.py
    • ...

我将我的代码分成五个单独的文件。一个“主”文件,收集所有其他文件并最终创建 GUI。文件的前缀是“Note”,后跟适当的描述。

我现在的问题是将“NoteTopMenu”导入主文件“NoteMainApp”。 代码是:

import NoteStatusbar as SB
import NoteTopMenu as TM
import NoteWidgets as NW
import tkinter as tk


class MainApp(tk.Frame):

    def __init__(self, parent):

        tk.Frame.__init__(self,parent)
        super().__init__(parent)
        self.topbar = TM.TopMenu(parent)
        self.widget = NW.FrontFrames(parent)
        self.statusbar = SB.StatusBar(parent)


root = tk.Tk()
MainApp(root).pack(side="top", fill="both")

root.mainloop()

我收到错误信息:

Traceback (most recent call last):
  File "C:/Users/PycharmProjects/MindNotez/NoteMainApp.py", line 2, in <module>
    import NoteTopMenu as TM
  File "C:\Users\PycharmProjects\MindNotez\NoteTopMenu.py", line 2, in <module>
    import NoteMainApp as Main
  File "C:\Users\PycharmProjects\MindNotez\NoteMainApp.py", line 29, in <module>
    MainApp(root).pack(side="top", fill="both")
  File "C:\Users\PycharmProjects\MindNotez\NoteMainApp.py", line 13, in __init__
    self.topbar = TM.TopMenu(parent)

AttributeError: 模块 'NoteTopMenu' 没有属性 'TopMenu'

NoteTopMenu 中的代码是:

import NoteMainApp as Main
import NoteWidgets as NW
import tkinter as tk


class TopMenu(NW.FrontFrames):
    """Class creating the top menu bar."""
    def __init__(self, master):
        super().__init__(master)
        # *******Top-Navigation Bar (tnb)**********
        tnb = tk.Menu(master)
        Main.root.config(menu=tnb)
        ....

如果我在主文件中注释掉 NoteTopMenu,代码运行时不会出现问题。我检查了拼写,但 PyCharm 还为我提供了代码完成功能。因此,PyCharm 发现文件、模块、我的类和其他模块都没有问题地导入。 你知道为什么文件/模块找不到或导入失败吗?

完整代码在 GitHub 上:MindNotez

非常感谢您的帮助!

最佳答案

您调用 NoteMainApp.py 导入 NoteTopMenu.py 导入 NoteMainApp.py 重新导入 NoteTopMenu.py(因为导入已经开始)。 NoteMainApp.py 的导入然后继续解析文件的其余部分。此时模块 NoteTopMenu 已定义,但它没有任何属性(因为您还没有开始定义它们)...因此出现错误。

我建议 NoteTopMenu.py 不应导入 NoteMainApp.py(如果两个文件都需要,则应将它们移动到另一个文件中可以导入)

关于python - 为什么即使导入、拼写和文件位置正确,我仍会收到 AttributeError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53315744/

相关文章:

python - 将由空格分隔的一列值拆分为 python 中每个值的单独列

python - Node JS/Python/C/C++中USB连接后Linux复制文件

python - 用 beautifulsoup 拉动当前股价 (Yahoo)

python - Pandas Dataframe 同时拆分列列表

python - builtins.TypeError : must be str, 不是字节

python - TensorFlow,训练产生3个ckpt文件,哪一个是正确的? (音乐_RNN_RBM)

python - 根据纬度/经度和半径选择 geopandas 或 pandas 中的行

python - 如何在 Python 中强制静态类型化?

Python类属性报错AttributeError : can't set attribute

python - 将自定义函数应用于 pandas Series 会产生 AttributeError