qué paquetes módulos modulos llamar lista librerias libreria incluidas importar implementa cliente clases python wxpython namespaces

paquetes - Exponer clases dentro de módulos dentro de un paquete de Python directamente en el espacio de nombres del paquete



modulos y paquetes python (1)

Tengo una aplicación wxPython con varias clases de GUI en sus propios módulos en un paquete llamado gui . Con esta configuración, la importación de la ventana principal se realizará de la siguiente manera:

from gui.mainwindow import MainWindow

Esto parecía desordenado para mí, así que cambié el archivo __init__.py para el paquete de gui __init__.py para importar la clase directamente en el espacio de nombres del paquete:

from mainwindow import MainWindow

Esto me permite importar la ventana principal de esta manera:

from gui import MainWindow

Esto se ve mejor para mí estéticamente y creo que también representa más de cerca lo que estoy haciendo (importar la clase MainWindow desde el "espacio de nombres" GUI). La razón por la que hice el paquete de GUI fue para mantener todas las cosas de GUI juntas. Pude fácilmente haber hecho un único módulo de gui gráfica de usuario y rellenar todas las clases de GUI en él, pero creo que habría sido inmanejable. El paquete ahora parece funcionar como un módulo, pero me permite separar las clases en sus propios módulos (junto con las funciones de ayuda, etc.).

Todo esto me parece algo mezquino, solo pensé en tirarlo allí para ver lo que otros piensan sobre la idea.


Bueno, este es un patrón bastante común y creo que también es la razón por la que puede incluir cosas dentro de los archivos __init__.py .
Como confirmación, solo __init__.py declaraciones de importación en los archivos __init__.py , y verá que se usa ampliamente tanto en la biblioteca estándar como en los paquetes comunes.