unit - ¿Cómo debería organizar el código fuente de Python?
unittest python 3 (2)
El artículo al que Eric señaló es asombroso porque cubre detalles de la organización de grandes bases de código Python.
Si ha aterrizado aquí desde Google y está tratando de descubrir cómo dividir un archivo fuente grande en archivos múltiples y más manejables, resumiré el proceso brevemente.
Supongamos que actualmente tiene todo en un archivo llamado main.py
:
- Cree otro archivo fuente en la misma carpeta (llamemos a nuestro
utils.py
para este ejemplo) - Mueve las clases, funciones, instrucciones, etc. que necesites de
main.py
autils.py
- En
main.py
agregue una sola línea en la parte superior:import utils
Conceptualmente, lo que hace es crear un nuevo módulo llamado utils
en otro archivo fuente. Luego puede importarlo donde sea necesario.
Estoy empezando con Python (ya es hora de probarlo) y estoy buscando algunas mejores prácticas.
Mi primer proyecto es una cola que ejecuta experimentos de línea de comandos en múltiples hilos. Estoy empezando a obtener un archivo main.py
muy largo, y me gustaría main.py
. En general, estoy buscando: ¿cómo los programadores de python organizan múltiples archivos de origen? ¿Hay una estructura particular que funcione para usted?
Mis preguntas específicas incluyen:
- ¿Debería cada clase estar en un archivo separado?
- ¿Cómo debería organizar las pruebas unitarias en relación con el código fuente?
- ¿Dónde debería poner los comentarios del documento, específicamente aquellos para la operación de la línea de comandos?
- Si utilizo varios directorios, ¿cómo importo las clases entre ellos?
Probablemente saque algunas de mis conclusiones aquí por ensayo y error, pero prefiero comenzar con algo bueno .
La forma en que debe organizar su código y las pruebas es exactamente lo mismo que haría con cualquier idioma OO.
Respuestas de la forma en que lo hago. Puede que no sea correcto, pero funciona para mí
- Depende de cómo se divide su funcionalidad. Para mi aplicación principal de python tengo 1 archivo con clases para los puntos de entrada y luego paquetes de diferentes bits de funcionalidad
- Uso PyDev para eclipse y lo organizo como lo haría para Java.
> Workspace > | > |-Src > | |-Package1 > | |-Package2 > | |-main.py > |-Test > |-TestPackage1 > |-TestPackage2
- Use DocString en todas partes para realizar un seguimiento de todo
- Después de asegurarse de que los archivos
__init__.py
relevantes estén en las carpetas. es solo un caso simple de lafrom module import class