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 ⇒