【问题标题】:Exposing classes inside modules within a Python package directly in the package's namespace直接在包的命名空间中公开 Python 包中模块内的类
【发布时间】:2011-02-06 18:52:55
【问题描述】:

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

from gui.mainwindow import MainWindow

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

from mainwindow import MainWindow

这让我可以像这样导入主窗口:

from gui import MainWindow

这对我来说在美学上看起来更好,我认为它也更能代表我正在做的事情(从gui“命名空间”导入MainWindow类)。我制作gui 包的原因是为了将所有GUI 内容放在一起。我本可以轻松地制作一个 gui 模块并将所有 GUI 类塞入其中,但我认为那将是无法管理的。该包现在看起来像一个模块,但允许我将这些类分成它们自己的模块(以及辅助函数等)。

这整件事让我觉得有些琐碎,我只是想我会把它扔出去看看其他人对这个想法的看法。

【问题讨论】:

  • 似乎您只是在询问 cmets,而不是真正提出问题……这对于 StackOverflow 来说并不正确。 (虽然物有所值,但我经常看到这种事情发生,我不认为有什么问题)

标签: python wxpython namespaces


【解决方案1】:

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

【讨论】:

  • 你是对的。我刚刚查看了 wxPython 的 __init__.py 文件,他们做了同样的事情。
猜你喜欢
  • 2017-08-03
  • 1970-01-01
  • 2021-12-23
  • 2012-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-28
  • 1970-01-01
相关资源
最近更新 更多