Gérer l'accès aux données : attributs privés

Programmation orientée objet en Python

Alex Yarosh

Content Quality Analyst @ DataCamp

Toutes les données d'une classe sont publiques

nous sommes tous des adultes ici

Programmation orientée objet en Python

Restreindre l'accès

  • Conventions de nommage
  • Utiliser @property pour adapter l'accès
  • Redéfinir __getattr__() et __setattr__()
Programmation orientée objet en Python

Convention : attributs internes

obj._att_name, obj._method_name()

  • Commence par un seul _ → « interne »
  • Ne fait pas partie de l'API publique
  • Pour l'utilisatrice ou l'utilisateur de la classe : « ne pas toucher »
  • Pour la développeuse ou le développeur de la classe : détails d'implémentation, fonctions utilitaires…

df._is_mixed_type , datetime._ymd2ord()

Programmation orientée objet en Python

Convention : attributs pseudo-privés

obj.__attr_name , obj.__method_name()

  • Commence mais ne se termine pas par __ → « privé »
  • Non hérité
  • Dénomination brouillée : obj.__attr_name est interprété comme obj._MyClass__attr_name
  • Sert à éviter les conflits de noms dans les classes dérivées

 

Des __ en tête et en fin ne servent qu'aux méthodes Python intégrées (__init__(),__repr__()) !

Programmation orientée objet en Python

Passons à la pratique !

Programmation orientée objet en Python

Preparing Video For Download...