Les secrets de l'encapsulation en Python

PythonPythonBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans une ère où le mystère du monde antique continue de prospérer, se trouve un temple caché enveloppé de mystère et gardé par le sentinelle spectral, un gardien fantôme. On dit que ce temple renferme le secret de l'encapsulation, un pouvoir mystique qui protège les trésors du temple tout comme l'encapsulation en Python protège l'intégrité des données d'un objet. En tant que mage Python aspirant, votre objectif est de découvrir ces secrets, de résoudre les énigmes du gardien et de maîtriser l'art d'encapsuler en Python pour revendiquer les connaissances arcaniques qui s'y trouvent.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ObjectOrientedProgrammingGroup(["Object-Oriented Programming"]) python/ObjectOrientedProgrammingGroup -.-> python/encapsulation("Encapsulation") subgraph Lab Skills python/encapsulation -.-> lab-271548{{"Les secrets de l'encapsulation en Python"}} end

Création de la classe Sentinel

Dans cette étape, vous commencerez votre parcours en créant une classe représentant le gardien fantôme, qui sera votre première rencontre avec l'encapsulation en Python. Ce gardien stocke un message secret qui ne peut être consulté que par une méthode spécifique, ce qui démontre le pouvoir des attributs privés. Vous allez créer la classe Sentinel avec des attributs et des méthodes privés pour protéger ses secrets.

Maintenant, ouvrez ~/project/sentinel.py dans votre éditeur de texte préféré et ajoutez le code suivant :

class Sentinel:
    def __init__(self):
        self.__message = 'La clé de l\'encapsulation se trouve dans les murs.'

    def reveal_message(self):
        return self.__message

guardian = Sentinel()
print(guardian.reveal_message())

Dans ce code, __message est un attribut privé, désigné par les doubles tirets bas, ce qui signifie qu'il n'est accessible que dans la classe elle-même. La méthode reveal_message fournit un accès contrôlé à l'attribut __message.

Essayez d'exécuter le code :

python sentinel.py

Vous devriez voir le message secret du gardien affiché :

La clé de l'encapsulation se trouve dans les murs.

Amélioration du gardien

Pour cette étape, vous allez améliorer la classe Sentinel avec une méthode permettant de modifier le message secret, mais seulement si le mot de passe correct est fourni. Cela renforcera davantage l'encapsulation de notre Sentinel et montrera comment encapsuler à la fois les données et le comportement dans une classe Python.

Mettez à jour sentinel.py avec le code suivant :

## sentinel.py

class Sentinel:
    def __init__(self):
        self.__message = 'La clé de l\'encapsulation se trouve dans les murs.'
        self.__passphrase = 'abracadabra'

    def reveal_message(self):
        return self.__message

    def change_message(self, new_message, passphrase):
        if passphrase == self.__passphrase:
            self.__message = new_message
        else:
            print('Mot de passe incorrect!')

guardian = Sentinel()
guardian.change_message('L\'encapsulation est puissante!', 'abracadabra')
print(guardian.reveal_message())

Maintenant, lorsque vous exécutez le code :

python sentinel.py

Vous verrez le message mis à jour si le mot de passe correct est utilisé :

L'encapsulation est puissante!

Sommaire

Dans ce laboratoire, vous êtes entré dans un monde où les principes anciens reflétaient le concept moderne d'encapsulation en Python. Vous avez créé une classe Sentinel qui protégeait ses secrets en utilisant des attributs privés, appris à les manipuler grâce à des méthodes publiques et mis en œuvre un contrôle d'accès avec un mot de passe. La conception de ce laboratoire était de garantir une approche pratique pour comprendre les interfaces privées et publiques d'une classe Python, en renforçant l'idée que l'encapsulation consiste autant à exposer les détails appropriés qu'à les cacher.

Grâce à cet exercice, vous avez acquis une compréhension plus approfondie de pourquoi l'encapsulation est un aspect fondamental de la programmation orientée objet et de la manière dont elle peut être élégamment réalisée en Python. Rappelez-vous, l'art d'écrire de bonnes instructions de programme implique souvent la création d'un façade qui révèle ce qui est nécessaire tout en protégeant la logique centrale, tout comme les gardiens mythiques de nos anciennes histoires.