Introduzione
In Python, le classi e gli oggetti sono fondamentali per la programmazione orientata agli oggetti (OOP). Questo tutorial si concentrerà su come utilizzare classi e oggetti per creare strutture dati personalizzate. Impareremo a definire classi che rappresentano entità del mondo reale, come ad esempio un sistema di gestione di una biblioteca. Utilizzeremo attributi e metodi per manipolare i dati in modo efficace.
Codice completo
class Libro:
def __init__(self, titolo, autore, anno_pubblicazione):
self.titolo = titolo
self.autore = autore
self.anno_pubblicazione = anno_pubblicazione
self.disponibile = True
def prendi_in_prestito(self):
if self.disponibile:
self.disponibile = False
print(f"Hai preso in prestito ´{self.titolo}´ di {self.autore}.")
else:
print(f"´{self.titolo}´ non è disponibile al momento.")
def restituisci(self):
self.disponibile = True
print(f"Hai restituito ´{self.titolo}´ di {self.autore}.")
def __str__(self):
stato = "disponibile" if self.disponibile else "non disponibile"
return f"´{self.titolo}´ di {self.autore}, pubblicato nel {self.anno_pubblicazione} - Stato: {stato}"
class Biblioteca:
def __init__(self):
self.libri = []
def aggiungi_libro(self, libro):
self.libri.append(libro)
print(f"Aggiunto: {libro}")
def mostra_libri(self):
print("Libri disponibili nella biblioteca:")
for libro in self.libri:
print(libro)
# Esempio di utilizzo
biblioteca = Biblioteca()
libro1 = Libro("1984", "George Orwell", 1949)
libro2 = Libro("Il Signore degli Anelli", "J.R.R. Tolkien", 1954)
biblioteca.aggiungi_libro(libro1)
biblioteca.aggiungi_libro(libro2)
biblioteca.mostra_libri()
libro1.prendi_in_prestito()
biblioteca.mostra_libri()
libro1.restituisci()
biblioteca.mostra_libri()
Spiegazione
Nel codice sopra, abbiamo definito due classi: Libro e Biblioteca. La classe Libro rappresenta un libro con attributi come titolo, autore e anno_pubblicazione. Inoltre, ha un attributo disponibile che indica se il libro è attualmente in prestito.
I metodi prendi_in_prestito e restituisci gestiscono il prestito del libro, aggiornando lo stato di disponibilità. Il metodo __str__ restituisce una rappresentazione testuale del libro, utile per il debug e la visualizzazione.
La classe Biblioteca gestisce una collezione di libri. Ha un attributo libri che è una lista di oggetti di tipo Libro. I metodi aggiungi_libro e mostra_libri permettono di aggiungere un libro alla biblioteca e di visualizzare tutti i libri disponibili, rispettivamente.
Best practice
- Incapsulamento: Mantieni gli attributi privati e fornisci metodi pubblici per accedervi e modificarli. Questo aiuta a mantenere l´integrità dei dati.
- Documentazione: Aggiungi docstring ai tuoi metodi e classi per spiegare il loro scopo e il loro utilizzo. Questo rende il codice più leggibile e manutenibile.
- Test unitari: Scrivi test per i tuoi metodi per garantire che funzionino come previsto. Puoi utilizzare il modulo unittest di Python per facilitare questo processo.
- Modularità: Se il tuo progetto cresce, considera di suddividere il codice in più file e moduli per migliorare l´organizzazione e la leggibilità.
Riepilogo
In questo tutorial, abbiamo esplorato come creare classi e oggetti in Python per rappresentare strutture dati personalizzate. Abbiamo implementato un semplice sistema di gestione di una biblioteca utilizzando classi per i libri e la biblioteca stessa. Abbiamo anche discusso alcune best practice per scrivere codice OOP di qualità.
