Resumen

Organizar un proyecto de Python en módulos convierte el caos en claridad. Separar responsabilidades, aplicar PEP 8 y usar imports bien escritos mejora el mantenimiento, la reutilización y la comprensión del código. Aquí verás cómo pasar de código espagueti a una estructura profesional con archivos como Libros.py, Biblioteca.py y main.py, además de clases como Estudiante, Profesor y Libro.

¿Por qué separar en módulos y evitar el código espagueti?

Cuando el código crece en un solo archivo, se vuelve insostenible y difícil de modificar. Dividir en módulos con responsabilidad única por archivo permite editar y localizar clases de forma directa.

¿Qué problemas resuelve la modularización?

  • Evita tener todo "amontonado" en un main.py interminable.
  • Reduce la deuda técnica al clarificar la arquitectura.
  • Facilita encontrar y editar clases, por ejemplo en Libros.py.
  • Acelera el mantenimiento y la lectura del proyecto.

¿Cómo se reduce deuda técnica y se mejora la arquitectura?

  • Separando definiciones de clases de la ejecución en main.py.
  • Creando archivos dedicados: Libros.py y Biblioteca.py para sus clases.
  • Eliminando código que “se ejecuta dentro del módulo” y moviéndolo a main.py.
  • Manteniendo cada archivo con una sola responsabilidad clara.

¿Cómo reorganizar archivos y clases con imports en Python?

Después de mover las clases a sus módulos, verás que el editor marca nombres no definidos: es momento de usar imports. Importar solo lo necesario conecta los módulos sin romper el encapsulamiento.

¿Qué archivos crear y qué responsabilidad tiene cada uno?

  • Libros.py: define Libro y el libro físico. Responsable de clases de libros.
  • Biblioteca.py: define la clase Biblioteca. Responsable de operaciones de la biblioteca.
  • Usuarios.py: define Estudiante, Profesor y el solicitante protocol. Responsable de usuarios y protocolos.
  • main.py: punto de entrada. Responsable de la interconexión y de ejecutar el flujo.

¿Cómo escribir imports correctos y útiles?

  • Importa clases desde su módulo de origen.
  • Agrupa múltiples clases del mismo módulo en una línea.
  • Mantén los imports al inicio del archivo.
# main.py
from Usuarios import Estudiante, Profesor  # y el solicitante protocol
from Libros import Libro, LibroFisico
from Biblioteca import Biblioteca

# creación e interconexión
town_library = Biblioteca()
est1 = Estudiante("Ana")
prof1 = Profesor("Luis")
lib1 = Libro("Python 101")
lib2 = LibroFisico("Estructuras de Datos")

# ejemplo de uso
print(town_library.libros)
  • Es válido repetir imports en varios archivos si se usan en cada uno.
  • Una buena práctica: nombrar los archivos en plural cuando contienen varias clases.

¿Qué buenas prácticas aplicar con pep 8, nombres y herramientas?

El sistema de imports de Python es un pilar de la modularización. Ordenarlo bien y automatizarlo con herramientas acelera el flujo y evita errores.

¿Cómo ordenar imports y nombres de módulos?

  • Sigue PEP 8: tres grupos con un salto de línea entre ellos.
  • Biblioteca estándar de Python.
  • Librerías de terceros.
  • Módulos de tu aplicación.
  • Dentro de cada grupo, orden alfabético.
  • Usa nombres de archivos claros y, cuando apliquen varias clases, en plural.
# ejemplo de orden pep 8
import os
import sys

import requests

from Usuarios import Estudiante, Profesor
from Libros import Libro, LibroFisico
from Biblioteca import Biblioteca
  • Herramientas: Ruff en Visual Studio Code puede organizar imports automáticamente al guardar.
  • Beneficio adicional: archivos más cortos reducen el contexto al usar LLMs para generar código; por ejemplo, pasar 8 líneas en vez de 10 o 20 ayuda a ahorrar costos.

¿Cómo validar el refactor y ejecutar el main?

  • Centraliza la creación de objetos y la lógica orquestadora en main.py.
  • Limpia líneas de prueba que ya no apliquen, por ejemplo si usas el libro físico.
  • Ejecuta el archivo de entrada.
python main.py
  • Verifica que imprime lo esperado, por ejemplo Biblioteca.libros.

¿Te funcionó esta estructura modular en tus proyectos de Python? Comparte tu experiencia y dudas en los comentarios.