1. Accueil
  2. /
  3. Docs
  4. /
  5. Python
  6. /
  7. Les bases de Python
  8. /
  9. Les Classes et Objets en ...

Les Classes et Objets en Python

La programmation orientée objet (POO) est un paradigme de programmation qui utilise des objets et des classes. Ce paradigme est très utile pour organiser le code, le rendre plus modulaire, réutilisable et maintenable. Voici une introduction complète aux classes et objets en Python.

1. Définition des Classes

Une classe est un plan (ou modèle) pour créer des objets. Elle définit un ensemble d’attributs et de méthodes qui caractérisent les objets créés à partir de cette classe.

Syntaxe de base d’une classe

Python
class MaClasse:
    pass

Ici, MaClasse est une classe vide définie avec le mot-clé class.

2. Le constructeur __init__

Le constructeur __init__ est une méthode spéciale appelée lors de la création d’une nouvelle instance de la classe.

La programmation orientée objet (POO) est un paradigme de programmation qui utilise des objets et des classes. Ce paradigme est très utile pour organiser le code, le rendre plus modulaire, réutilisable et maintenable. Voici une introduction complète aux classes et objets en Python.

Python
class Personne:
    def __init__(self, nom, age):
        self.nom = nom
        self.age = age

3. Création d’une Instance

Une instance est un objet créé à partir d’une classe.

Python
personne1 = Personne("Alice", 30)

4. Attributs d’Instance

Les attributs d’instance sont des variables qui appartiennent à chaque instance d’une classe.

Python
print(personne1.nom)  # Alice
print(personne1.age)  # 30

5. Méthodes d’Instance

Les méthodes d’instance sont des fonctions définies à l’intérieur d’une classe et qui opèrent sur les instances de cette classe.

Python
class Personne:
    def __init__(self, nom, age):
        self.nom = nom
        self.age = age

    def se_presenter(self):
        print(f"Je m'appelle {self.nom} et j'ai {self.age} ans.")

personne1 = Personne("Alice", 30)
personne1.se_presenter()  # Je m'appelle Alice et j'ai 30 ans.

6. Attributs et Méthodes de Classe

Les attributs et méthodes de classe sont partagés entre toutes les instances d’une classe.

Python
class Personne:
    population = 0  # Attribut de classe

    def __init__(self, nom, age):
        self.nom = nom
        self.age = age
        Personne.population += 1  # Incrémentation à chaque nouvelle instance

    @classmethod
    def afficher_population(cls):
        print(f"Population totale : {cls.population}")

personne1 = Personne("Alice", 30)
personne2 = Personne("Bob", 25)
Personne.afficher_population()  # Population totale : 2

7. Héritage

L’héritage permet de créer une nouvelle classe à partir d’une classe existante. La nouvelle classe hérite des attributs et méthodes de la classe parente.

Python
class Etudiant(Personne):
    def __init__(self, nom, age, etudes):
        super().__init__(nom, age)
        self.etudes = etudes

    def se_presenter(self):
        super().se_presenter()
        print(f"Je suis étudiant en {self.etudes}.")

etudiant1 = Etudiant("Charlie", 22, "informatique")
etudiant1.se_presenter()
# Je m'appelle Charlie et j'ai 22 ans.
# Je suis étudiant en informatique.

8. Polymorphisme

Le polymorphisme permet d’utiliser une méthode de la même manière pour différentes classes.

Python
class Animal:
    def faire_du_bruit(self):
        pass

class Chien(Animal):
    def faire_du_bruit(self):
        print("Wouf!")

class Chat(Animal):
    def faire_du_bruit(self):
        print("Miaou!")

def faire_faire_du_bruit(animal):
    animal.faire_du_bruit()

chien = Chien()
chat = Chat()

faire_faire_du_bruit(chien)  # Wouf!
faire_faire_du_bruit(chat)  # Miaou!

9. Encapsulation

L’encapsulation restreint l’accès direct à certains attributs et méthodes d’un objet. En Python, on utilise des conventions pour indiquer qu’un attribut ou une méthode est privé(e).

Python
class Banque:
    def __init__(self, solde):
        self.__solde = solde  # Attribut privé

    def deposer(self, montant):
        self.__solde += montant

    def retirer(self, montant):
        if montant <= self.__solde:
            self.__solde -= montant
        else:
            print("Fonds insuffisants")

    def afficher_solde(self):
        print(f"Solde: {self.__solde}")

compte = Banque(1000)
compte.deposer(500)
compte.retirer(200)
compte.afficher_solde()  # Solde: 1300

10. Méthodes Magiques

Les méthodes magiques (ou dunder methods) sont des méthodes spéciales en Python, précédées et suivies de deux underscores (__). Elles permettent de définir le comportement de certaines opérations pour les instances de classe.

Exemple de méthode __str__

Python
class Personne:
    def __init__(self, nom, age):
        self.nom = nom
        self.age = age

    def __str__(self):
        return f"{self.nom}, {self.age} ans"

personne1 = Personne("Alice", 30)
print(personne1)  # Alice, 30 ans

11. Propriétés

Les propriétés permettent de contrôler l’accès aux attributs d’instance.

Python
class Personne:
    def __init__(self, nom, age):
        self._nom = nom
        self._age = age

    @property
    def age(self):
        return self._age

    @age.setter
    def age(self, valeur):
        if valeur < 0:
            raise ValueError("L'âge ne peut pas être négatif")
        self._age = valeur

personne1 = Personne("Alice", 30)
print(personne1.age)  # 30
personne1.age = 35
print(personne1.age)  # 35

Conclusion

Les classes et les objets sont des concepts fondamentaux de la programmation orientée objet. En utilisant des classes, des objets, de l’héritage, du polymorphisme, de l’encapsulation et d’autres concepts, vous pouvez écrire du code plus modulaire, réutilisable et maintenable. Cette introduction couvre les bases, mais il existe de nombreux aspects avancés et subtilités à explorer pour maîtriser pleinement la programmation orientée objet en Python.

Still stuck? Contact

Comment pouvons-nous aider ?

Poster le commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *