我正在开发一个GUI应用程序。假设我有一个文件main.py,它位于根目录中,我想导入这样的小部件:
from widgets import FancyWindow, ColorPicker
# ...我的应用程序的结构如下:
| main.py
+ widgets/
| __init__.py
| fancy_window.py
| color_picker.py
...IIRC,我必须从其他模块导入类,如下所示:
from widgets.color_picker import ColorPicker
from widgets.fancy_window import FancyWindow因此,我的问题是,我是否可以在widgets/__init__.py中做些什么,这样我就可以以我想要的方式进行导入了?
发布于 2014-08-06 19:11:31
您实际上已经在那里了,只需让您的__init__.py有这两行:
from widgets.color_picker import ColorPicker
from widgets.fancy_window import FancyWindow然后,您在__init__.py中导入的任何东西(以及您定义的任何其他符号)都是可用的。
例如,如果你把:
apple = 5在__init__.py中,您也可以这样做:from widgets import apple。没有魔法:)
发布于 2014-08-06 19:13:34
最好的方法是使用__init__.py来执行包所需的设置。
# __init__.py
from fancy_window import FancyWindow
from color_picker import ColorPicker然后在main.py中,您可以直接执行导入。
# main.py
from widgets import FancyWindow, ColorPicker在__init__.py中打包所有东西的更方便的方法
# __init__.py
from fancy_window import *
from color_picker import *发布于 2014-08-06 19:16:23
在__init__.py中,您可以导入模块,然后导出它们:
from fancy_window import FancyWindow
from color_picker import ColorPicker
__all__ = [FancyWindow, ColorPicker]现在,您可以执行以下操作:
from widgets import * # Only imports FancyWindow and ColorPicker
from widgets import FancyWindow
from widgets import ColorPicker
import widgets
color_picker = widgets.ColorPicker()https://stackoverflow.com/questions/25168235
复制相似问题