Hantera dataåtkomst: privata attribut

Objektorienterad programmering i Python

Alex Yarosh

Content Quality Analyst @ DataCamp

All klassdata är publik

vi är alla vuxna här

Objektorienterad programmering i Python

Begränsa åtkomst

  • Namnkonventioner
  • Använd @property för att anpassa åtkomst
  • Åsidosätt __getattr__() och __setattr__()
Objektorienterad programmering i Python

Namnkonvention: interna attribut

obj._att_name, obj._method_name()

  • Börjar med ett enskilt _ → "intern"
  • Ingår inte i det publika API:t
  • Som klassanvändare: "rör inte detta"
  • Som klassutvecklare: använd för implementationsdetaljer, hjälpfunktioner..

df._is_mixed_type , datetime._ymd2ord()

Objektorienterad programmering i Python

Namnkonvention: pseudoprivata attribut

obj.__attr_name , obj.__method_name()

  • Börjar men slutar inte med __ → "privat"
  • Ärvs inte
  • Namnmangling: obj.__attr_name tolkas som obj._MyClass__attr_name
  • Används för att undvika namnkonflikter i ärvda klasser

 

Inledande och avslutande __ används enbart för inbyggda Python-metoder (__init__(),__repr__())!

Objektorienterad programmering i Python

Nu kör vi en övning!

Objektorienterad programmering i Python

Preparing Video For Download...