Programmation Orientée Objet en Python : Maîtriser les Classes et les Instances

La programmation orientée objet (POO) est un paradigme central en Python. Elle permet de structurer le code en regroupant des données et des comportements au sein d'entités logiques nommées classes.

Concepts fondamentaux

  • Classe : Un modèle ou un plan de conception qui définit les caractéristiques (attriubts) et les comportements (méthodes) communs à un groupe d'objets.
  • Objet : Une instance concrète d'une classe. Si "Voiture" est une classe, une Tesla spécifique garée dans votre garage est un objet.
  • Instanciation : Le processus de création d'un objet à partir d'une classe.
  • Méthode : Une fonction définie à l'intérieur d'une classe qui manipule les données de l'objet.
  • Attribut de classe : Une variable partagée par toutes les instances d'une classe. Elle est définie directement dans le corps de la classe, hors de toute méthode.
  • Attribut d'instance : Une variable spécifique à chaque objet, préfixée par self, généralement définie dans le constructeur.
  • Héritage : Mécanisme permettent à une classe (enfant) de récupérer les propriétés d'une autre classe (parent).
  • Surcharge (Override) : Redéfinition d'une méthode héritée pour adapter son comportement dans la classe enfant.

Définition d'une classe

En Python, la création d'une classe suit une syntaxe simple. Voici les différentes manières de déclarer une structure de classe :

# Syntaxe moderne (hérite implicitement d'object)
class Vehicule:
    pass

# Syntaxe explicite
class Avion(object):
    pass

Structure et implémentation pratique

Le composant le plus important d'une classe est la méthode __init__. Il s'agit du constructeur, appelé automatiquement lors de la création d'un nouvel objet pour initialiser ses attributs.

class Entreprise:
    # Attribut de classe (commun à toutes les instances)
    secteur = "Technologie"

    def __init__(self, nom, effectif):
        """Constructeur pour initialiser les attributs d'instance"""
        self.nom_societe = nom      # Attribut d'instance
        self.nombre_employes = effectif  # Attribut d'instance

    def afficher_infos(self):
        """Méthode d'instance pour afficher les détails"""
        print(f"Société : {self.nom_societe}")
        print(f"Employés : {self.nombre_employes}")

    def modifier_effectif(self, nouveau_nombre):
        self.nombre_employes = nouveau_nombre

if __name__ == "__main__":
    # Instanciation de l'objet
    ma_boite = Entreprise("OpenData", 50)

    # Accès aux attributs d'instance
    print(ma_boite.nom_societe)   # Sortie : OpenData
    print(ma_boite.nombre_employes) # Sortie : 50

    # Accès à l'attribut de classe
    print(ma_boite.secteur) # Sortie : Technologie

    # Appel d'une méthode
    ma_boite.afficher_infos()

Le rôle du paramètre self

Dans chaque méthode d'instance, le premier paramètre est obligatoirement self. Il représente l'instance actuelle de l'objet sur laquelle la méthode est appelée.

  • Il permet d'accéder aux variables et autres méthodes de la même classe.
  • Lors de l'appel d'une méthode (ex: objet.methode()), Python transmet automatiquement l'objet à self, il ne faut donc pas passer cet argument manuellement.

Étiquettes: Python OOP classes Inheritance programming-concepts

Publié le 28 juillet à 16h15