Zarządzanie dostępem do danych: atrybuty prywatne

Programowanie obiektowe w Pythonie

Alex Yarosh

Content Quality Analyst @ DataCamp

Wszystkie dane klasy są publiczne

wszyscy jesteśmy tu dorosłymi

Programowanie obiektowe w Pythonie

Ograniczanie dostępu

  • Konwencje nazewnictwa
  • Użycie @property do kontroli dostępu
  • Nadpisywanie __getattr__() i __setattr__()
Programowanie obiektowe w Pythonie

Konwencja nazewnictwa: atrybuty wewnętrzne

obj._att_name, obj._method_name()

  • Zaczyna się od pojedynczego _ → "wewnętrzny"
  • Nie jest częścią publicznego API
  • Dla użytkownika klasy: „nie dotykaj tego"
  • Dla twórcy klasy: używaj do szczegółów implementacji, funkcji pomocniczych..

df._is_mixed_type , datetime._ymd2ord()

Programowanie obiektowe w Pythonie

Konwencja nazewnictwa: atrybuty pseudoprywatne

obj.__attr_name , obj.__method_name()

  • Zaczyna się, ale nie kończy na __ → „prywatny"
  • Nie jest dziedziczony
  • Modyfikacja nazwy: obj.__attr_name jest interpretowane jako obj._MyClass__attr_name
  • Używany do zapobiegania konfliktom nazw w klasach dziedziczonych

 

Wiodące i końcowe __ są używane wyłącznie dla wbudowanych metod Pythona (__init__(),__repr__())!

Programowanie obiektowe w Pythonie

Czas na ćwiczenia!

Programowanie obiektowe w Pythonie

Preparing Video For Download...