Gestione dell'accesso ai dati: attributi privati

Programmazione orientata agli oggetti in Python

Alex Yarosh

Content Quality Analyst @ DataCamp

Tutti i dati della classe sono pubblici

siamo tutti adulti qui

Programmazione orientata agli oggetti in Python

Limitare l'accesso

  • Convenzioni di denominazione
  • Usa @property per personalizzare l'accesso
  • Sovrascrivere __getattr__() e __setattr__()
Programmazione orientata agli oggetti in Python

Convenzione di denominazione: attributi interni

obj._att_name, obj._method_name()

  • Inizia con un singolo _ → "interno"
  • Non fa parte dell'API pubblica
  • Come utente della classe: "non toccare"
  • Come sviluppatore della classe: usa per dettagli di implementazione, funzioni di supporto..

df._is_mixed_type , datetime._ymd2ord()

Programmazione orientata agli oggetti in Python

Convenzione di denominazione: attributi pseudoprivati

obj.__attr_name , obj.__method_name()

  • Inizia ma non termina con __ → "privato"
  • Non ereditato
  • Offuscamento del nome: obj.__attr_name è interpretato come obj._MyClass__attr_name
  • Usato per evitare conflitti di nomi nelle classi ereditate

 

I e __ finali sono solo per metodi Python integrati (__init__(),__repr__())!

Programmazione orientata agli oggetti in Python

Facciamo pratica!

Programmazione orientata agli oggetti in Python

Preparing Video For Download...