Attributs de classe vs. d’instance

Introduction à la programmation orientée objet en Python

George Boorman

Curriculum Manager, DataCamp

Principes clés de la POO

Encapsulation:

  • Regrouper données et méthodes

Héritage:

  • Étendre des fonctionnalités existantes

Polymorphisme:

  • Créer une interface unifiée
Introduction à la programmation orientée objet en Python

Attributs d’instance

class Employee:
    def __init__(self, name, salary):
        self.name = name
        self.salary = salary

emp1 = Employee("Teo Mille", 50000) 
emp2 = Employee("Marta Popov", 65000)
  • Les valeurs name et salary sont propres à chaque objet
  • self affecte à un objet
Introduction à la programmation orientée objet en Python

Attributs au niveau de la classe

  • Données partagées par toutes les instances d’une classe

 

  • Définir les attributs de classe dans le corps de class

 

  • « Variable globale » au sein de la classe
Introduction à la programmation orientée objet en Python

Implémenter des attributs de classe

class Employee:
    # Définir un attribut de classe
    # Pas de syntaxe self.
    MIN_SALARY = 30000 

def __init__(self, name, salary): self.name = name # Utiliser le nom de la classe # pour accéder à l’attribut de classe if salary >= Employee.MIN_SALARY: self.salary = salary
else: self.salary = Employee.MIN_SALARY
  • MIN_SALARY est partagé par toutes les instances
  • Ne pas utiliser self pour définir un attribut de classe
  • Convention : utiliser des majuscules
  • Utiliser ClassName.ATTR_NAME pour accéder à la valeur d’attribut de classe
Introduction à la programmation orientée objet en Python

Attributs au niveau de la classe

class Employee:
    # Définir un attribut de classe
    MIN_SALARY = 30000    

def __init__(self, name, salary): self.name = name # Utiliser le nom de la classe # pour accéder à l’attribut de classe if salary >= Employee.MIN_SALARY: self.salary = salary else: self.salary = Employee.MIN_SALARY
emp1 = Employee("John", 40000)
print(emp1.MIN_SALARY)
30000
emp2 = Employee("Jane", 60000)
print(emp2.MIN_SALARY)
30000
Introduction à la programmation orientée objet en Python

Modification des attributs de classe

emp1 = Employee("John", 40000)
emp2 = Employee("Jane", 60000)

# Mettre à jour MIN_SALARY de emp1 emp1.MIN_SALARY = 50000
# Afficher MIN_SALARY pour les deux employés print(emp1.MIN_SALARY) print(emp2.MIN_SALARY)
50000
30000
Introduction à la programmation orientée objet en Python

Modification des attributs de classe

  • MIN_SALARY est créé dans la définition de la classe

 

  • Mettre à jour MIN_SALARY sur un objet n’affecte pas la valeur dans la classe

 

  • Sécurité : empêcher les modifications du logiciel !
Introduction à la programmation orientée objet en Python

Pourquoi utiliser des attributs de classe ?

Constantes globales liées à la classe

 

  • Valeurs min et max pour des attributs
    • Empêcher les données invalides
  • Valeurs/constantes communes, p. ex. host, port pour une classe Database
    • Éviter les répétitions lors de la création d’objets
Introduction à la programmation orientée objet en Python

Passons à la pratique !

Introduction à la programmation orientée objet en Python

Preparing Video For Download...