Gestionarea accesului la date: atribute private

Programare orientată pe obiecte în Python

Alex Yarosh

Content Quality Analyst @ DataCamp

Toate datele clasei sunt publice

suntem cu toții adulți aici

Programare orientată pe obiecte în Python

Restricționarea accesului

  • Convenții de denumire
  • Utilizarea @property pentru controlul accesului
  • Suprascrierea __getattr__() și __setattr__()
Programare orientată pe obiecte în Python

Convenție de denumire: atribute interne

obj._att_name, obj._method_name()

  • Începe cu un singur _ → "intern"
  • Nu face parte din API-ul public
  • Ca utilizator al clasei: „nu modifica"
  • Ca dezvoltator al clasei: folosit pentru detalii de implementare, funcții auxiliare..

df._is_mixed_type , datetime._ymd2ord()

Programare orientată pe obiecte în Python

Convenție de denumire: atribute pseudoprivate

obj.__attr_name , obj.__method_name()

  • Începe, dar nu se termină cu __ → „privat"
  • Nu este moștenit
  • Name mangling: obj.__attr_name este interpretat ca obj._MyClass__attr_name
  • Folosit pentru a preveni conflicte de nume în clasele moștenite

 

__ la început și la sfârșit se folosesc doar pentru metodele built-in Python (__init__(),__repr__())!

Programare orientată pe obiecte în Python

Să exersăm!

Programare orientată pe obiecte în Python

Preparing Video For Download...