Skip to content

Instantly share code, notes, and snippets.

@hcosta
Last active May 6, 2023 19:18
Show Gist options
  • Save hcosta/ff9b771ce7edaf1bb4d919675e109d13 to your computer and use it in GitHub Desktop.
Save hcosta/ff9b771ce7edaf1bb4d919675e109d13 to your computer and use it in GitHub Desktop.
class Producto:
def __init__(self, nombre, descripcion, precio):
self.nombre = nombre
self.descripcion = descripcion
self.precio = precio
class Subproducto(Producto):
def __init__(self, nombre, descripcion, precio, marca):
super().__init__(nombre, descripcion, precio)
self.marca = marca
# Crear una lista de productos de prueba
productos = [
Producto('Camisa', 'Camisa de algodón', 20.0),
Producto('Pantalón', 'Pantalón de mezclilla', 30.0),
Subproducto('Zapatillas', 'Zapatillas deportivas', 50.0, 'Nike')
]
# Funciones CRUD
def crear_producto(nombre, descripcion, precio, marca=None):
if marca:
producto = Subproducto(nombre, descripcion, precio, marca)
else:
producto = Producto(nombre, descripcion, precio)
productos.append(producto)
def leer_producto(nombre):
for producto in productos:
if producto.nombre == nombre:
return producto
return None
def actualizar_producto(nombre, descripcion=None, precio=None, marca=None):
producto = leer_producto(nombre)
if producto:
if descripcion:
producto.descripcion = descripcion
if precio:
producto.precio = precio
if marca:
producto.marca = marca
else:
raise ValueError("Producto no encontrado")
def borrar_producto(nombre):
producto = leer_producto(nombre)
if producto:
productos.remove(producto)
else:
raise ValueError("Producto no encontrado")
@Luthercoach
Copy link

Yo le indique que me ordenara el código y que me muestre los productos por pantalla, porque me equivoque ordenando mientras te seguia en el curso, y esto fue lo que me dió:

class Producto:
def init(self, nombre, descripcion, precio):
self.nombre = nombre
self.descripcion = descripcion
self.precio = precio

class Subproducto(Producto):
def init(self, nombre, descripcion, precio, marca):
super().init(nombre, descripcion, precio)
self.marca = marca

Crear un diccionario de productos de prueba

productos = {
'Camisa': Producto('Camisa', 'Camisa de algodón', 20.0),
'Pantalón': Producto('Pantalón', 'Pantalón de mezclilla', 30.0),
'Zapatillas': Subproducto('Zapatillas', 'Zapatillas deportivas', 50.0, 'Nike')
}

Funciones CRUD

def crear_producto(nombre, descripcion, precio, marca=None):
if nombre in productos:
raise ValueError("El producto ya existe")
if marca:
producto = Subproducto(nombre, descripcion, precio, marca)
else:
producto = Producto(nombre, descripcion, precio)
productos[nombre] = producto

def leer_producto(nombre):
return productos.get(nombre)

def actualizar_producto(nombre, **kwargs):
producto = leer_producto(nombre)
if not producto:
raise ValueError("Producto no encontrado")
for key, value in kwargs.items():
if hasattr(producto, key):
setattr(producto, key, value)
else:
raise ValueError(f"El producto no tiene el atributo {key}")

def borrar_producto(nombre):
if nombre not in productos:
raise ValueError("Producto no encontrado")
del productos[nombre]

def mostrar_productos():
for producto in productos.values():
print(f"{producto.nombre}: {producto.descripcion} ({producto.precio} €)")

if name == "main":
mostrar_productos() # Mostrar los productos al iniciar el programa

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment