🐍 Cours de programmation Python sur Excel 💻

🎲 Les objets

Jusqu'à présent, nous avons manipulé des variables, des listes et des fonctions séparément. La programmation orientée objet (POO) consiste à regrouper des données et les traitements associés dans une même structure appelée objet. Les objets sont créés à partir de modèles appelés classes.



🤔 Qu'est-ce qu'un objet ?

Prenons l'exemple d'un chat qui possède des attributs :

Il peut également :

Ce sont ses méthodes. Une classe sert donc à définir :



✳️ Créer une classe et des objets

Une classe se crée avec le mot-clé class.


    class Animal:

        def __init__(self, nom, age):

            self.nom = nom
            self.age = age

La méthode spéciale __init__() est automatiquement appelée lors de la création d'un objet. Elle permet d'initialiser les attributs. Pour créer un objet, il suffit ensuite d'utiliser le nom de la classe.


    chat = Animal("Pipelette", 1)
    print(chat.nom)
    print(chat.age)

Résultat :


    Pipelette
    1

Chaque objet possède ses propres valeurs. Bien qu'ils soient créés à partir de la même classe, leurs attributs sont indépendants.


    chat = Animal("Pipelette", 1)
    hamster = Animal("Croquette", 2)


📜 Les méthodes et les attributs

Une classe peut contenir des fonctions appelées méthodes.


class Animal:

    def __init__(self, nom, age):

        self.nom = nom
        self.age = age

    def se_presenter(self):

        return f"Je suis {self.nom} et j'ai {self.age} ans."

Utilisation :


chien = Animal("Rex", 5)

print(chien.se_presenter())

Résultat :


Je suis Rex et j'ai 5 ans.

Le mot-clé self

Le paramètre self représente l'objet en cours d'utilisation.

Il permet d'accéder aux attributs et aux autres méthodes de cet objet.


self.nom
self.age

Dans la pratique, il suffit de retenir que self désigne l'objet actuel.

Modifier un attribut


chien = Animal("Rex", 5)

chien.age = 6

print(chien.age)

Résultat :


6

Méthodes avec paramètres

Comme les fonctions, les méthodes peuvent recevoir des arguments.


class CompteBancaire:

    def __init__(self, titulaire, solde=0):

        self.titulaire = titulaire
        self.solde = solde

    def deposer(self, montant):

        self.solde += montant

    def afficher_solde(self):

        return f"Solde : {self.solde} €"

Utilisation :


compte = CompteBancaire("Alice", 100)

compte.deposer(50)

print(compte.afficher_solde())

Résultat :


Solde : 150 €

Afficher un objet avec __str__()

Par défaut, Python affiche une représentation peu lisible des objets.

La méthode spéciale __str__() permet de personnaliser cet affichage.


class Livre:

    def __init__(self, titre, pages):

        self.titre = titre
        self.pages = pages

    def __str__(self):

        return f"{self.titre} ({self.pages} pages)"

livre = Livre("Python pour tous", 250)

print(livre)

Résultat :


Python pour tous (250 pages)


💸 L'héritage

L'héritage permet de créer une nouvelle classe à partir d'une classe existante. La nouvelle classe récupère automatiquement les attributs et méthodes de la classe parent.


    class Animal:

        def __init__(self, nom):

            self.nom = nom

        def se_presenter(self):

            return f"Je suis {self.nom}"

    class Chat(Animal):

        def miauler(self):

            return "Miaaaou !"

Utilisation :


    Pipelette = Chat("Pipelette")

    print(Pipelette.se_presenter())
    print(Pipelette.miauler())

Résultat :


    Je suis Pipelette
    Miaaaou !

L'héritage permet d'éviter de réécrire du code déjà existant.



🟩 Les objets et Excel

Il est tout à fait possible de créer et d'utiliser des objets dans les fonctions Python utilisées par Excel. Cependant, Excel ne sait pas afficher directement des objets personnalisés dans une cellule. Une fonction appelée depuis Excel doit généralement renvoyer un type simple (un nombre, une chaîne de caractères, un booléen, une liste, une liste de listes).


    class Employe:

        def __init__(self, nom, salaire):

            self.nom = nom
            self.salaire = salaire

Cette fonction ne sera généralement pas exploitable directement dans Excel :


    def creer_employe():

        return Employe("Thomas", 4000)

En revanche, il est tout à fait possible d'utiliser l'objet à l'intérieur de la fonction puis de renvoyer un résultat exploitable par Excel.


    class Employe:

        def __init__(self, nom, salaire):

            self.nom = nom
            self.salaire = salaire

    def salaire_annuel(nom, salaire):

        employe = Employe(nom, salaire)

        return employe.salaire * 12

Excel recevra alors simplement un nombre. Les objets sont donc principalement utilisés pour organiser le code et représenter des données complexes. Dans les compléments Python pour Excel, ils servent le plus souvent en interne aux fonctions plutôt qu'à être renvoyés directement dans les cellules.