Information hiding
In python non esistono variabili private, il che rende la questione della sicurezza un po’ ardua. È bene quindi utilizzare le naming convention, per disciplinare la scrittura del codice ed evitare errori di programmazione.
Naming convention
_x
Attributo o metodo ad uso riservato all’interno di un modulo o classe.
__x
Attributo da considerarsi privato. Internamente alla classe può essere chiamato normalmente. All’esterno della classe si deve utilizzare il name mangling, ovvero se fa parte della classe A, si dovrà chiamare tramite _A__x
Accesso diretto in lettura ad un attributo nominato così, tramite obj.__x, provoca errore. In scrittura, non provoca errore, ma il valore non cambia, perché è stato creato un nuovo attributo chiamato __x, che è diverso da _A__x.
__x__
Hanno un significato speciale, e non si dovrebbero chiamare in questo modo attributi assegnati dallo sviluppatore.
Non si ha quindi una componente di sicurezza effettiva in python.
Il trade off principale è quindi semplicità di scrittura vs sicurezza.