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

时间:2010-04-11 19:39:50

标签: python wxpython namespaces

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

from gui.mainwindow import MainWindow

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

gui

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

from mainwindow import MainWindow

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

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

1 个答案:

答案 0 :(得分:5)

嗯,这是一种非常常见的模式,我认为这也是 为什么你可以在__init__.py文件中包含内容的原因。 作为确认,只需grep __init__.py文件中的import语句,您就会发现它在标准库和公共包中都被广泛使用。