Volver
Ctrl+Space
◑
Copiar
Descargar
Restaurar
Ejecutar
Ctrl+Enter
# POO en Python - Ejemplo 4: Sistema de biblioteca # =================================================== class Publicacion: def __init__(self, titulo, autor, anio): self.titulo = titulo self.autor = autor self.anio = anio self._prestado = False def prestar(self): if self._prestado: print(f" '{self.titulo}' ya está prestado") return False self._prestado = True print(f" Prestado: '{self.titulo}'") return True def devolver(self): self._prestado = False print(f" Devuelto: '{self.titulo}'") @property def disponible(self): return not self._prestado def __str__(self): estado = "disponible" if self.disponible else "prestado" return f"{self.titulo} — {self.autor} ({self.anio}) [{estado}]" class Libro(Publicacion): def __init__(self, titulo, autor, anio, paginas): super().__init__(titulo, autor, anio) self.paginas = paginas def __str__(self): return f"[Libro] {super().__str__()} — {self.paginas} págs" class Revista(Publicacion): def __init__(self, titulo, autor, anio, numero): super().__init__(titulo, autor, anio) self.numero = numero def __str__(self): return f"[Revista] {super().__str__()} — N°{self.numero}" class Biblioteca: def __init__(self, nombre): self.nombre = nombre self._catalogo = [] def agregar(self, publicacion): self._catalogo.append(publicacion) def buscar(self, titulo): for pub in self._catalogo: if titulo.lower() in pub.titulo.lower(): return pub return None def disponibles(self): return [p for p in self._catalogo if p.disponible] def mostrar_catalogo(self): print(f"\n{'='*55}") print(f" {self.nombre.upper()}") print(f"{'='*55}") for pub in self._catalogo: print(f" {pub}") print(f"{'='*55}") print(f" Total: {len(self._catalogo)} | Disponibles: {len(self.disponibles())}") # Crear biblioteca bib = Biblioteca("Biblioteca Central") bib.agregar(Libro("Python Crash Course", "Eric Matthes", 2019, 544)) bib.agregar(Libro("Clean Code", "Robert Martin", 2008, 431)) bib.agregar(Libro("El Aleph", "Jorge L. Borges", 1949, 203)) bib.agregar(Revista("National Geographic", "Varios", 2024, 302)) bib.mostrar_catalogo() print("\n=== Préstamos ===") bib._catalogo[0].prestar() bib._catalogo[0].prestar() # ya prestado bib._catalogo[1].prestar() bib.mostrar_catalogo() print("\n=== Devolución ===") bib._catalogo[0].devolver() print("\n=== Buscar ===") res = bib.buscar("clean") if res: print(f" Encontrado: {res}")