class Producto:
def __init__(self, nombre, precio, existencia):
self.nombre = nombre
self.precio = precio
self.existencia = existencia
# --- GETTERS CON PROTECCIÓN ---
@property
def precio(self):
# Usamos getattr con un valor por defecto para evitar el AttributeError si se borró
return getattr(self, '_precio', "Dato no disponible")
@precio.setter
def precio(self, valor):
if valor < 0:
raise ValueError("El precio no puede ser negativo.")
self._precio = valor
@property
def existencia(self):
return getattr(self, '_existencia', "Dato no disponible")
@existencia.setter
def existencia(self, valor):
if valor < 0:
raise ValueError("La existencia no puede ser negativa.")
self._existencia = valor
# --- MÉTODO DE ELIMINACIÓN ---
def eliminar_informacion(self, nombre_atrib):
# Buscamos tanto la versión interna (_atrib) como la pública (atrib)
targets = [f"_{nombre_atrib}", nombre_atrib]
for t in targets:
if hasattr(self, t):
delattr(self, t)
return True
return False
# --- ACTUAR DEL MENÚ ---
def iniciar_sistema():
inventario = {}
while True:
print("\n--- SISTEMA DE PRODUCTOS ---")
print("1. Registrar nuevo producto")
print("2. Mostrar inventario")
print("3. Borrar dato específico de un producto")
print("4. Salir")
opcion = input("Seleccione una opción: ")
if opcion == "1":
try:
nom = input("Nombre del producto: ")
pre = float(input("Precio: "))
stock = int(input("Existencia inicial: "))
inventario[nom] = Producto(nom, pre, stock)
print(f"✅ {nom} agregado exitosamente.")
except ValueError as e:
print(f"❌ Error de validación: {e}")
elif opcion == "2":
if not inventario:
print("El inventario está vacío.")
else:
print("\nLISTADO DE PRODUCTOS:")
for p in inventario.values():
print(f"-> {p.nombre} | Precio: {p.precio} | Stock: {p.existencia}")
elif opcion == "3":
nom = input("Nombre del producto a modificar: ")
if nom in inventario:
atrib = input("¿Qué dato desea eliminar (precio/existencia)? ")
if inventario[nom].eliminar_informacion(atrib):
print(f"🗑️ Atributo '{atrib}' eliminado de {nom}.")
else:
print("Atributo no encontrado.")
else:
print("El producto no existe.")
elif opcion == "4":
print("Cerrando sistema...")
break
if __name__ == "__main__":
iniciar_sistema()