Gestion de 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 de classe sont publiques

nous sommes tous adultes ici

Programmation orientée objet en Python

Restreindre l'accès

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

Convention de nommage : attributs internes

obj._att_name, obj._method_name()

  • Commence par un _ → "interne"
  • Pas dans l'API publique
  • Pour l'utilisateur : "ne pas toucher"
  • Pour le développeur : détails d'implémentation, fonctions auxiliaires..

df._is_mixed_type , datetime._ymd2ord()

Programmation orientée objet en Python

Convention de nommage : attributs pseudo-privés

obj.__attr_name , obj.__method_name()

  • Commence mais ne finit pas par __ → "privé"
  • Non hérité
  • Obfuscation : obj.__attr_name est interprété comme obj._MyClass__attr_name
  • Évite les conflits de noms dans les classes héritées

 

Le double __ au début et à la fin est uniquement pour les 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...