Resumen

Domina los fundamentos de la programación orientada a objetos en Python: define una clase como molde, crea objetos con el método constructor y configura un entorno virtual con UV para ejecutar tu código de forma aislada. Aquí verás cómo usar class, self y init, además de iniciar un proyecto con uv init y estructurar un catálogo de libros.

¿Cómo iniciar un proyecto con UV y preparar el entorno?

Inicia en una carpeta vacía y verifica que UV esté instalado. Luego, crea la estructura base del proyecto con uv init, que incluye archivos clave como main.py, la descripción del proyecto con sus dependencias y el README para documentación. Si Python no se encuentra al ejecutar, crea y activa un entorno virtual con UV.

¿Qué archivos genera uv init y para qué sirven?

  • Archivo con la versión de Python del proyecto: asegura reproducibilidad.
  • main.py: punto de entrada para escribir y ejecutar el código.
  • Descripción del proyecto y lista de dependencias: ajusta el nombre, por ejemplo a "biblioteca".
  • README: guía con instrucciones para el equipo de desarrollo.
# Verificar instalación de UV
uv version

# Inicializar el proyecto
uv init

¿Cómo crear y activar un entorno virtual con UV?

  • Si Python no se ejecuta, crea un entorno virtual con UV.
  • Actívalo y ejecuta tu script para validar que todo funciona.
# Crear entorno virtual
uv vm

# Activar entorno virtual (según tu shell)
source .venv/bin/activate

# Ejecutar el programa
python main.py

¿Qué es una clase en Python y cómo se define?

Una clase es como un molde de pastel: define la forma y estructura. Con ese molde, puedes crear múltiples objetos, cada uno con sus propios valores. En Python, se declara con la palabra reservada class, el nombre con primera letra mayúscula y dos puntos. Si aún no implementas detalles, usa pass.

# Primera definición: plano sin instrucciones
class Libro:
    pass

¿Cómo usar self y el método constructor init?

Dentro de una clase, las funciones se llaman métodos. El método constructor init recibe los parámetros iniciales y siempre incluye self, que referencia al propio objeto. No retorna valor: solo inicializa atributos del objeto con self.

class Libro:
    def __init__(self, titulo, autor):
        self.titulo = titulo
        self.autor = autor
  • self: referencia al objeto que se está creando.
  • init: método que define los atributos iniciales.
  • Atributos: valores como titulo y autor que cada objeto almacena.

¿Cómo instanciar y acceder a atributos?

Crea variables en minúscula para instancias y pasa los argumentos esperados por init. Nota que self no se pasa al instanciar: Python lo maneja automáticamente.

mi_libro = Libro('Cien años de soledad', 'Gabriel García')
otro_libro = Libro('El Principito', 'Antoine de Saint-Exupéry')

print(mi_libro.titulo)
print(mi_libro.autor)
print(otro_libro.titulo)
print(otro_libro.autor)
  • Cada uso del “molde” crea un objeto con valores propios.
  • Al imprimir, verás atributos distintos por cada instancia.

¿Cómo extender la clase libro y practicar con un reto?

Para afianzar, agrega nuevos parámetros y crea una lista tipo catálogo. Luego, recórrela con un for para imprimir cada libro. Esto solidifica los conceptos de atributos, listas y bucles.

¿Cómo agregar ISBN y disponible?

Amplía el constructor para incluir ISBN y disponible de tipo booleano. Define los nuevos atributos con self.

class Libro:
    def __init__(self, titulo, autor, isbn, disponible):
        self.titulo = titulo
        self.autor = autor
        self.isbn = isbn
        self.disponible = disponible

¿Cómo construir un catálogo y recorrerlo con for?

Crea una lista con varias instancias y recórrela para imprimir sus valores.

catalogo = [
    Libro('Cien años de soledad', 'Gabriel García', '9780307474728', True),
    Libro('El Principito', 'Antoine de Saint-Exupéry', '9780156013987', False),
]

for libro in catalogo:
    print(libro.titulo, libro.autor, libro.isbn, libro.disponible)

¿Tienes otra versión del reto o una mejora para el catálogo? Comparte tu solución y cuéntame cómo lo abordaste.