Представление классов в модулях в пакете 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 в нем, но я думаю, что это было бы неуправляемо. Пакет теперь, кажется, работает как модуль, но позволяет мне разделять классы на их собственные модули (наряду с функциями помощника, и т.д.).

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

12
задан 2 revs 11 April 2010 в 19:52
поделиться

1 ответ

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

5
ответ дан 2 December 2019 в 23:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: