
GUIDE PER ASPIRANTI PROGRAMMATORI
Incapsulamento in Python
L’incapsulamento è un altro concetto chiave nella programmazione orientata agli oggetti che consente di nascondere i dettagli di implementazione di una classe e di proteggere i dati da accessi non autorizzati. In Python, l’incapsulamento è principalmente ottenuto utilizzando il prefisso doppio sottolineato ( __ ) prima del nome degli attributi o dei metodi di una…


Vuoi avviare una nuova carriera o fare un upgrade?
Trova il corso Digital & Tech più adatto a te nel nostro catalogo!
L’incapsulamento è un altro concetto chiave nella programmazione orientata agli oggetti che consente di nascondere i dettagli di implementazione di una classe e di proteggere i dati da accessi non autorizzati.
In Python, l’incapsulamento è principalmente ottenuto utilizzando il prefisso doppio sottolineato ( __ ) prima del nome degli attributi o dei metodi di una classe, ecco un esempio:
class ContoBancario: def __init__(self, nome_titolare, saldo_iniziale): self.__nome_titolare = nome_titolare self.__saldo = saldo_iniziale # Getter per ottenere il nome del titolare del conto def get_nome_titolare(self): return self.__nome_titolare # Setter per impostare il nome del titolare del conto def set_nome_titolare(self, nuovo_nome): self.__nome_titolare = nuovo_nome # Getter per ottenere il saldo del conto def get_saldo(self): return self.__saldo # Setter per depositare una certa quantità di denaro nel conto def deposita(self, importo): if importo > 0: self.__saldo += importo print("Deposito effettuato: +”, importo, “EUR") else: print("L'importo del deposito deve essere maggiore di zero.") # Setter per prelevare una certa quantità di denaro dal conto def preleva(self, importo): if importo > 0 and importo <= self.__saldo: self.__saldo -= importo print("Prelievo effettuato: -”, importo, “EUR") elif importo <= 0: print("L'importo del prelievo deve essere maggiore di zero.") else: print("Fondi insufficienti per il prelievo.") # Creiamo un conto bancario conto = ContoBancario("Mario Rossi", 1000) # Utilizziamo i getter per ottenere le informazioni print("Titolare del conto:”, conto.get_nome_titolare()) print("Saldo iniziale:”, conto.get_saldo(), ” EUR") # Utilizziamo i setter per effettuare operazioni sul conto conto.deposita(500) conto.preleva(200) # Stampiamo il saldo aggiornato print("Saldo attuale:”, conto.get_saldo(), ” EUR")
Funzionamento pratico dell’incapsulamento in Python
Descriviamo ora il funzionamento pratico dell’incapsulamento in Python, inerentemente ad attributi privati, metodi privati e metodi pubblici.
- Attributi Privati :
Gli attributi di una classe possono essere dichiarati come privati mettendo __ prima del loro nome. Ad esempio, __nome indica un attributo privato.class Persona: def __init__(self, nome, cognome): self.__nome = nome self.__cognome = cognome
Non è possibile accedere direttamente dall’esterno della classe agli attributi privati. Tentativi di accesso a tali attributi causeranno un errore. Questo aiuta a garantire che i dati siano modificati solo attraverso metodi specifici della classe.
- Metodi Privati: Analogamente, i metodi di una classe possono essere dichiarati come privati utilizzando il prefisso __. Ad esempio, __calcola_eta indica un metodo privato.
class Persona: def __init__(self, nome, cognome): self.__nome = nome self.__cognome = cognome def __calcola_eta(self, anno_di_nascita): # Questo è un metodo privato per calcolare l'età return 2023 - anno_di_nascita
I metodi privati non possono essere chiamati direttamente dall’esterno della classe. Questo è utile per nascondere la logica interna e le implementazioni dei metodi.
- Metodi Pubblici: Per consentire agli utenti esterni di interagire con gli attributi privati o di eseguire operazioni specifiche, è possibile creare metodi pubblici nella classe.
class Persona: def __init__(self, nome, cognome): self.__nome = nome self.__cognome = cognome def calcola_eta(self, anno_di_nascita): # Questo è un metodo pubblico per calcolare l'età return 2023 - anno_di_nascita
I metodi pubblici possono essere chiamati dall’esterno della classe e sono il modo principale attraverso cui gli utenti interagiscono con gli oggetti di quella classe.
L’incapsulamento in Python è importante perché offre una protezione dei dati e una separazione tra l’implementazione interna di una classe e l’uso esterno. Ciò rende il codice più robusto, più facile da manutenere e migliora la modularità. Gli attributi privati e i metodi privati sono accessibili solo all’interno della classe stessa, il che significa che gli errori di programmazione sono meno probabili e che è possibile modificare l’implementazione interna senza influenzare il codice esterno che utilizza la classe.
Ecco un esempio di utilizzo dell’incapsulamento in Python:
persona = Persona("Alice", "Smith") # Questo genererà un errore perché __nome è un attributo privato. print(persona.__nome) # Questo funzionerà poiché stiamo utilizzando un metodo pubblico. eta = persona.calcola_eta(1990) print(eta)
In breve, l’incapsulamento è uno dei principi fondamentali della OOP che aiuta a creare classi più sicure e modulari, migliorando la manutenibilità del codice.
CONTENUTI GRATUITI IN EVIDENZA
Guide per aspiranti programmatori 👨🏻🚀
Vuoi muovere i primi passi nel Digital e Tech? Abbiamo preparato alcune guide per aiutarti a orientarti negli ambiti più richiesti oggi.