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.