CONTATTACI

Guide per aspiranti programmatori

sviluppatrice in miniatura seduta su un pc che inserisce ingranaggi in un grande imbuto
Lezione 15 / 23

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 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.

 

  1. 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.

  2. 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.

  3. 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.

Contattaci senza impegno per informazioni sul corso

Pagamento rateale

Valore della rata: A PARTIRE DA 115 €/mese.

Esempio di finanziamento 

Importo finanziato: € 2440 in 24 rate da € 115 – TAN fisso 9,55% TAEG 12,57% – importo totale del credito € 2841.

Il costo totale del credito comprende: interessi calcolati al TAN indicato, oneri fiscali (imposta di bollo sul contratto 16,00 euro*) addebitati sulla prima rata, costo mensile di gestione pratica € 3,90, spesa di istruttoria € 0,00, spesa per invio rendicontazione periodica cartacea € 0,98 (o spesa per invio rendicontazione periodica cartacea € 0,00), imposta di bollo su rendicontazione periodica € 0,00. Modalità di rimborso obbligatoria: addebito diretto su c/c. La scadenza delle rate è determinata dal giorno della liquidazione del contratto; la data di scadenza delle rate è prevista il giorno 15 del mese. L’importo di ciascuna rata comprende una quota di capitale crescente e interessi decrescente secondo un piano di ammortamento “alla francese”. Offerta valida dal 01/01/2024 al 31/12/2024.

Messaggio pubblicitario con finalità promozionale. Per le informazioni precontrattuali richiedere sul punto vendita il documento “Informazioni europee di base sul credito ai consumatori” (SECCI) e copia del testo contrattuale. Salvo approvazione di Sella Personal Credit S.p.A. Aulab S.r.l. opera quale intermediario del credito NON in esclusiva.

*In fase di richiesta del finanziamento verrà proposta la facoltà di selezionare, in alternativa all’imposta di bollo sul contratto di 16,00 euro, l’imposta sostitutiva, pari allo 0,25% dell’importo finanziato.

Pagamento rateale

Valore della rata: A PARTIRE DA 210 €/mese.

Esempio di finanziamento  

Importo finanziato: € 4500 in 24 rate da € 210,03 – TAN fisso 9,68% TAEG 11,97% – importo totale del credito € 5146,55.

Il costo totale del credito comprende: interessi calcolati al TAN indicato, oneri fiscali (imposta di bollo sul contratto 16,00 euro*) addebitati sulla prima rata, costo mensile di gestione pratica € 3,90, spesa di istruttoria € 0,00, spesa per invio rendicontazione periodica cartacea € 0,98 (o spesa per invio rendicontazione periodica cartacea € 0,00), imposta di bollo su rendicontazione periodica € 0,00. Modalità di rimborso obbligatoria: addebito diretto su c/c. La scadenza delle rate è determinata dal giorno della liquidazione del contratto; la data di scadenza delle rate è prevista il giorno 15 del mese. L’importo di ciascuna rata comprende una quota di capitale crescente e interessi decrescente secondo un piano di ammortamento “alla francese”. Offerta valida dal 01/01/2024 al 31/12/2024.

Messaggio pubblicitario con finalità promozionale. Per le informazioni precontrattuali richiedere sul punto vendita il documento “Informazioni europee di base sul credito ai consumatori” (SECCI) e copia del testo contrattuale. Salvo approvazione di Sella Personal Credit S.p.A. Aulab S.r.l. opera quale intermediario del credito NON in esclusiva.

* In fase di richiesta del finanziamento verrà proposta la facoltà di selezionare, in alternativa all’imposta di bollo sul contratto di 16,00 euro, l’imposta sostitutiva, pari allo 0,25% dell’importo finanziato.

Contattaci senza impegno per informazioni sul corso

Scopriamo insieme se i nostri corsi fanno per te. Compila il form e aspetta la chiamata di uno dei nostri consulenti.