Lezioni di Python – 7.5 Data Hiding

Lezioni di Python - 7.5 Data Hiding

Il Data Hiding

Una delle parti chiave della programmazione ad oggetti è l’incapsulamento, che coinvolge l’impacchettamento di variabili e funzioni correlate in un solo oggetto semplice da usare: l’istanza di una classe.

Un concetto correlato a questo è il data hiding, che consiste nel nascondere i dettagli di implementazione di una classe. In questo modo l’interfaccia di utilizzo di questa classe da parte dell’utente è pulita e maggiormente intuibile. In altri linguaggi di programmazione, il data hiding viene effettuato creando dei metodi e degli attributi privati, a cui il loro accesso esterno alla funzione viene bloccato. In Python, invece la filosofia è leggermente diversa “noi siamo tutti adulti consenzienti” e quindi non esistono particolari restrizioni nell’accesso. Quindi non esiste nulla che possa rendere privato un attributo o un metodo in modo da renderlo inaccessibile all’esterno della classe.

In Python, i metodi cosiddetti debolmente privati, presentano un singolo underscore (_) come prefisso nel loro nome. Questo prefisso segnala la presenza di un metodo privato, che non dovrebbe essere utilizzato all’esterno della classe. Ma questa è solo una convenzione e niente evita il contrario. L’unico effetto reale che ha è quello di evitare l’importazione del metodo quando si utilizza la dicitura

from nomemodulo import *

Invece, esistono dei metodi e attributi, fortemente privati, che sono contraddistinti dal doppio underscore (__) come prefisso nel loro nome. Una volta che un metodo è marcato con questo doppio underscore, allora il metodo sarà realmente privato e non sarà più accessibile dall’esterno della classe.

Comunque questi metodi possono essere ancora accessibili dall’esterno, utilizzando però un nome diverso

_nomeclasse__nomemetodoprivato

Per esempio se in una classe Figura abbiamo il metodo privato __hidden possiamo accedere esternamente a tale metodo richiamando

_Figura__hidden

⇐Vai a Lezione 7.4 – Il ciclo di vita di un oggetto

Vai a Lezione 7.6 – Metodi di classe e metodi statici ⇒

Lascia un commento