gpt4 book ai didi

Python 通配符导入与命名导入

转载 作者:太空狗 更新时间:2023-10-30 02:14:17 26 4
gpt4 key购买 nike

好吧,我在我的一个项目中有一些相当奇怪的行为,我希望有人能告诉我原因。我的文件结构如下所示:

MainApp.py
res/
__init__.py
elements/
__init__.py
MainFrame.py

在 MainFrame.py 中,我定义了一个名为 RPMWindow 的类,它扩展了 wx.Frame。

在 MainApp.py 中这有效:

from res.elements.MainFrame import *

这不是:

from res.elements.MainFrame import RPMWindow

我意识到通配符导入不会造成任何伤害,但我更感兴趣的是理解为什么当通配符成功时命名导入失败。

当使用类名时,我得到了这个回溯:

Traceback (most recent call last):
File "C:\myApps\eclipse\plugins\org.python.pydev.debug_1.5.6.2010033101\pysrc\pydevd.py", line 953, in <module>
debugger.run(setup['file'], None, None)
File "C:\myApps\eclipse\plugins\org.python.pydev.debug_1.5.6.2010033101\pysrc\pydevd.py", line 780, in run
execfile(file, globals, locals) #execute the script
File "C:\Documents and Settings\Daniel\workspace\RPM UI - V2\src\MainApp.py", line 2, in <module>
from res.elements.MainFrame import RPMWindow
File "C:\Documents and Settings\Daniel\workspace\RPM UI - V2\src\res\elements\MainFrame.py", line 2, in <module>
from res.elements.MenuBar import MenuBarBuilder
File "C:\Documents and Settings\Daniel\workspace\RPM UI - V2\src\res\elements\MenuBar.py", line 2, in <module>
from MainApp import _, DataCache
File "C:\Documents and Settings\Daniel\workspace\RPM UI - V2\src\MainApp.py", line 2, in <module>
from res.elements.MainFrame import RPMWindow
ImportError: cannot import name RPMWindow

当使用通配符导入时,我没有收到回溯信息并且我的应用程序打开了。

最佳答案

你有循环导入:

MainFrame.py 间接导入 MainApp.py,MainApp.py 导入 MainFrame.py。因此,当 MainApp.py 导入 MainFrame.py 时,RPMWindow 类尚未定义,您会收到 ImportError。

关于Python 通配符导入与命名导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2669627/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com