Organizza il codice come il mondo reale: classi, oggetti, ereditarietà e incapsulamento.
Finora abbiamo usato variabili e funzioni separate. La programmazione orientata agli oggetti (OOP) permette di raggruppare dati e comportamenti insieme, in un'unica entità chiamata "oggetto". Una classe è lo stampo, l'oggetto è il prodotto creato da quello stampo.
class Studente: def __init__(self, nome, età): self.nome = nome self.età = età def presentati(self): print(f"Ciao, sono {self.nome} e ho {self.età} anni") anna = Studente("Anna", 22) anna.presentati() # Ciao, sono Anna e ho 22 anni
__init__ è il "costruttore": si esegue automaticamente quando crei un nuovo oggetto, e self rappresenta l'oggetto stesso, permettendo di accedere ai suoi dati.
La classe è la definizione generale (es. "Automobile"), l'oggetto è un'istanza concreta (es. "la mia Fiat 500 rossa"). Da una classe puoi creare quanti oggetti vuoi.
Una classe (figlia) può "ereditare" attributi e metodi da un'altra classe (madre), evitando di riscrivere codice comune e aggiungendo solo ciò che è specifico.
Consiste nel proteggere i dati interni di un oggetto, esponendo solo ciò che è necessario. In Python si usa la convenzione di anteporre un underscore (_saldo) o doppio underscore per indicare attributi "privati".
Classi diverse possono avere metodi con lo stesso nome, ma comportamenti diversi: ogni oggetto risponde "a modo suo" alla stessa chiamata.
__init__ è il metodo speciale eseguito alla creazione dell'oggetto (costruttore). self rappresenta l'oggetto stesso ed è sempre il primo parametro di ogni metodo di una classe.
Spunta ogni passaggio man mano che lo completi: sbloccherai l'attestato di questa guida al termine.
Esempio per il punto 1
class Animale: def __init__(self, nome, specie): self.nome = nome self.specie = specie
Esempio per il punto 2
def presentati(self): print(f"Sono {self.nome}, un {self.specie}")
Esempio per il punto 3
gatto = Animale("Micio", "gatto") cane = Animale("Fido", "cane") gatto.presentati() cane.presentati()
Esempio per il punto 4
class Cane(Animale): # Cane eredita da Animale def abbaia(self): print(f"{self.nome} dice: Bau!") fido = Cane("Fido", "cane") fido.presentati() # ereditato da Animale fido.abbaia() # proprio di Cane
Tocca ogni termine per vederne la definizione.
Crea una classe "Libro" con attributi titolo, autore, anno. Aggiungi un metodo scheda() che stampa una descrizione completa del libro. Crea 2 oggetti Libro diversi.
Crea una classe "Veicolo" (marca, velocità_max) e una sottoclasse "Moto" che eredita da Veicolo e aggiunge un metodo impenna() specifico.
Questo codice dà errore: def presentati(): print(self.nome) dentro una classe, senza self tra i parametri del metodo. Spiega perché non funziona e correggilo.
Completa tutti i 5 passaggi della checklist per sbloccare il tuo attestato in PDF.