Modularización II (con el uso de POO)
Organización y uso de clases en un sistema de módulos
En Python, al utilizar el sistema de archivos y módulos, busca por defecto los archivos .py dentro de la misma carpeta donde esta el archivo que contiene el código que lo llama. En caso que el archivo .py que contenga los módulos que se desean importar se encontrara en otro directorio diferente al del archivo que contiene el script que lo llama, Python lo busca en SYSPATH, es decir en el conjunto de directorios dentro del cual se encuentra el directorio de instalación de Python. Obviamente no es conveniente guardar los módulos de los sistemas que vayamos desarrollando dentro de los directorios de instalación de Python. Con lo cual se hace necesario, luego de crear el archivo __init__.py dentro de la carpeta que va a funcionar como módulo, incluir el nombre de la carpeta que contiene los archivos .py que componen el módulo. Por ejemplo si incluimos el código de definicion de clases, propiedades y métodos de vehículos vistos anteriormente, en un archivo llamado vehiculos.py que a su vez esté dentro de una carpeta llamada 'modulos' y deseamos importar las funciones y clases en otro script ubicado fuera de la carpeta 'modulos', se hace necesario incluir el nombre de la carpeta 'modulos' usando la nomenclatura del punto (.) y seguido el nombre del archivo (vehiculos.py). Veamos el ejemplo en la práctica:
Contenido del archivo vehiculos.py (Ruta: \modulos\):
Es imprtante recordar que dentro de la carpeta 'modulos' debe existir un archivo de texto vacío llamado '__init__.py', para que Python reconozca el contenido de la carpeta 'modulos' como un paquete.
Contenido del archivo principal.py:
Nótese la inclusión del nombre de la carpeta contenedora de los módulos en la instrucción de importación seguido de punto y el nombre del módulo a importar.
Nota: Python va a crear automáticamente una carpeta llamada '__pycache__' dentro de la carpeta que compone el paquete para que dicha carpeta funcione como tal. También es posible crear subcarpetas dentro de las carpetas de los módulos, los cuales funcionarían como sub paquetes del paquete principal. Pero por supuesto esto va a responder directamente a las necesidades organizativas del programa a desarrollar y del enfoque que le de cada quien, teniendo siempre como premisa principal, la simplicidad, organización, facilidad de uso y reusabilidad del código. Las carpetas que componen los subpaquetes también deben contener el archivo '__init__.py' cada una. Como nota adicional hay que tomar en cuenta que obviamente para llamar a los módulos que se encuentran en los subpaquetes habría que incluir en la instrucción IMPORT, la ruta completa de carpetas donde se encuentra el archivo.py.
Comentarios
Publicar un comentario