直接在包的命名空间中公开Python包中的模块内的类

Ric*_*ite 12 python wxpython namespaces

我有一个wxPython应用程序,它在各自的模块中使用各种GUI类来调用gui.使用此设置,导入主窗口将按如下方式完成:

from gui.mainwindow import MainWindow
Run Code Online (Sandbox Code Playgroud)

这对我来说看起来很乱,所以我更改了包的__init__.py文件,gui将类直接导入包命名空间:

from mainwindow import MainWindow
Run Code Online (Sandbox Code Playgroud)

这允许我像这样导入主窗口:

from gui import MainWindow
Run Code Online (Sandbox Code Playgroud)

这在美学上看起来更好,我认为它也更接近地代表了我正在做的事情(MainWindowgui"命名空间" 导入类).我制作gui软件包的原因是为了将所有GUI内容保持在一起.我可以轻松地创建一个gui模块并将所有GUI类填充到其中,但我认为这将是无法管理的.该软件包现在看起来像一个模块,但允许我将类分成它们自己的模块(以及辅助函数等).

整件事让我感到有点小气,我只是觉得我会把它扔出去看看其他人对这个想法的看法.

rob*_*rob 5

好吧,这是一个非常普遍的模式,我认为这也是您可以在文件中包含内容原因__init__.py
作为确认,只需grep在__init__.py文件中使用import语句,您就会发现它已在标准库和通用包中广泛使用。