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 :

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

Attributs au niveau 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 assigne à un objet
Introduction à la programmation orientée objet en Python

Attributs au niveau classe

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

 

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

 

  • « Variable globale » à l'intérieur de la classe
Introduction à la programmation orientée objet en Python

Mettre en œuvre 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
  • N'utilisez pas self pour définir un attribut de classe
  • Par convention, utilisez des majuscules
  • Utilisez ClassName.ATTR_NAME pour accéder à la valeur de l'attribut de classe
Introduction à la programmation orientée objet en Python

Attributs au niveau 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

Modifier 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

Modifier des attributs de classe

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

 

  • Mettre à jour MIN_SALARY d'un objet n'affecte pas la valeur dans la classe

 

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

Pourquoi utiliser des attributs de classe ?

Constantes globales liées à la classe

 

  • Valeurs minimale et maximale pour des attributs
    • Empêcher les données invalides
  • Valeurs et constantes courantes, 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...