Guía de Referencia 2: La Fábrica de Productos
El producto es la pieza básica de todo el sistema: un diccionario con cuatro claves fijas. Esta guía construye la única función que lo fabrica, y explica por qué, gracias a JSON, no necesitas nada más para llevarlo al disco y traerlo de vuelta.
Crear un Producto
Podrías escribir el diccionario a mano cada vez que necesites uno. Pero un error de dedo ("nobre" en lugar de "nombre") crearía un producto defectuoso que rompería el programa mucho más tarde, lejos de la causa. Una función fábrica garantiza que todos los productos salgan con las mismas cuatro claves:
def crear_producto(id_producto: str, nombre: str,
precio: float, stock: int) -> dict:
"""Crea el diccionario que representa una caja del almacén."""
return {
"id": id_producto,
"nombre": nombre,
"precio": precio,
"stock": stock,
}
Detalle de nombre: el parámetro se llama id_producto y no id porque id ya es una función propia de Python. Pisarla con tu variable funciona, pero es mala costumbre.
Prueba rápida en consola:
def crear_producto(id_producto: str, nombre: str,
precio: float, stock: int) -> dict:
"""Crea el diccionario que representa una caja del almacén."""
return {
"id": id_producto,
"nombre": nombre,
"precio": precio,
"stock": stock,
}
caja = crear_producto("1", "Tornillos", 5.5, 500)
print(caja)
# {'id': '1', 'nombre': 'Tornillos', 'precio': 5.5, 'stock': 500}
Por qué no Hay “Funciones de Traducción”
Aquí es donde la elección del formato te ahorra trabajo. Como viste en el Capítulo 11, guardar en CSV te obligaría a aplanar cada diccionario y luego reconstruirlo campo por campo; con JSON esa capa de traducción no existe.
json.dump toma tu lista de diccionarios y la escribe tal cual; json.load te la devuelve idéntica, con los tipos intactos. El producto que fabricaste con crear_producto es exactamente lo que vuelve del disco. Por eso esta guía tiene una sola función en lugar de tres.
Ya tienes la pieza básica. Ahora hay que operarla en masa: generar IDs, agregar, buscar, eliminar y persistir. Eso es la Guía de Referencia 3.