2010-04-11 13 views
11

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 llevaría a cabo de la siguiente manera:Exponer clases dentro de módulos dentro de un paquete de Python directamente en el espacio de nombres del paquete

from gui.mainwindow import MainWindow 

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

from mainwindow import MainWindow 

esto me permite importar la ventana principal de la siguiente 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 (importando la clase MainWindow del gui "namespace"). La razón por la que hice el paquete gui fue mantener todas las cosas de la GUI juntas. Pude fácilmente haber hecho un único módulo gui 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.

+0

Parece que solo está pidiendo comentarios, en realidad no hace una pregunta ... lo cual no es realmente correcto para StackOverflow. (Aunque por lo que vale, veo este tipo de cosas con frecuencia y no creo que haya nada de malo en ello) –

Respuesta

4

Bueno, este es un patrón bastante común y creo que también es el por lo que puede incluir cosas dentro de los archivos __init__.py.
Como confirmación, simplemente grep para las 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.

+0

Tienes razón. Acabo de ver el archivo '__init __. Py' de wxPython y hacen lo mismo. –

Cuestiones relacionadas