Выявление классов внутри модулей внутри пакета Python непосредственно в пространстве имен пакетов

У меня есть приложение wxPython с различными классами GUI в своих собственных модулях в пакете под названием gui. С помощью этой настройки импортирование главного окна будет выполняться следующим образом:

from gui.mainwindow import MainWindow

Это выглядело беспорядочным для меня, поэтому я изменил файл __init__.py для пакета gui, чтобы импортировать класс непосредственно в пространство имен пакетов:

from mainwindow import MainWindow

Это позволяет мне импортировать главное окно следующим образом:

from gui import MainWindow

Это выглядит лучше для меня эстетически, и я думаю, что он также более точно отражает то, что я делаю (импортируя класс MainWindow из пространства имен gui "). Причина, по которой я сделал пакет gui, состояла в том, чтобы объединить все компоненты GUI. Я мог бы так же легко сделать один модуль gui и наполнить все классы GUI, но я думаю, что это было бы неуправляемо. Теперь пакет выглядит как модуль, но позволяет мне разделить классы на свои собственные модули (вместе со вспомогательными функциями и т.д.).

Все это кажется мне немного мелочным, я просто подумал, что выброшу его, чтобы посмотреть, что другие думают об этой идее.

Ответ 1

Хорошо, это довольно распространенный шаблон, и я думаю, что это также причина, по которой вы можете включать вещи в файлы __init__.py.
В качестве подтверждения просто grep для операторов импорта в файлах __init__.py, и вы увидите, что он широко используется как в стандартной библиотеке, так и в общих пакетах.