Notions avancées en langage Python
Introduction
Le présent chapitre va être consacré aux notions un peu plus avancées en langage Python, notions qui vont nous être utiles dans l’apprentissage de Pygame, soit directement, soit indirectement. C’est en particulier le cas de la programmation orientée objet, dont les premières notions (notion de classe, notion d’instance) sont indispensables à maîtriser.
Le chapitre sera également consacré à d’autres notions avancées, toutefois moins essentielles pour évoluer dans le monde Pygame.
La programmation orientée objet
1. Introduction
L’idée ici est, à nouveau, de ne pas détailler pas à pas les concepts, mais plutôt de donner les clés de compréhension qui permettent de se projeter au plus vite sur le développement Pygame. Après avoir rappelé les quelques concepts principaux de la POO (programmation orientée objet), il s’agira de prendre plusieurs exemples relatifs aux classes, aux instances voire à une notion comme l’héritage.
Nous irons au plus vite à la découverte de la POO en Python en suivant le « chemin » suivant :
-
Les classes, et donc les instances (ce qui a trait au concept d’encapsulation).
-
Cela nous permettra d’aborder la notion d’attributs, de propriétés et de méthodes de classes.
-
Nous dirons enfin un mot à propos d’héritage puis de polymorphisme. Nous aborderons en effet la question de la surcharge de méthodes.
2. Les classes en Python
La classe peut être vue comme le modèle, le moule d’objets dont on peut ensuite décliner la création autant que l’on veut. Ainsi, on peut imaginer avoir une classe Pays qui aurait par exemple une propriété nom et une autre capitale.
Ainsi, nous concrétisons à partir de cette classe (de ce modèle) des pays comme l’instance de nom « France » dont la propriété capitale est Paris. Nous déclinons ainsi un ensemble de métadonnées qui définissent une notion donnée (ici, un pays).
Essayons de coder cela en Python :
class Pays:
nom = "Pays à définir"
capitale = "Valeur inconnue"
Pour l’instant, nous n’avons pas grand-chose : juste un modèle...
L’environnement virtuel
1. Contexte
Quand vous codez en Python, vous allez rapidement avoir une multitude de modules installés sur votre machine. Et même pour un module donné, vous allez rapidement vous retrouver avec plusieurs versions d’un même module installées sur votre machine. Ce sera peut-être le cas du module Pygame, que vous aurez, après quelques mois de pratique, en plusieurs versions.
Un dispositif plutôt relatif à la façon de programmer existe en langage Python : il s’agit de l’environnement virtuel. Ce dernier permet d’installer les modules nécessaires dans leurs bonnes versions, strictement relativement à un projet donné. Cela facilite votre travail, apporte de la sécurité et de la clarté à vos projets ou à l’exécution des projets tiers que vous utilisez.
2. Petit exemple théorique
Il existe plusieurs systèmes d’environnement virtuel en Python. Nous allons toutefois en évoquer un seul type ici, celui qui est utilisé habituellement. Il s’agit de virtualenv.
Bien évidemment, il faut commencer par installer le module ad hoc.
pip install virtualenv
Pour un projet donné, un projet que vous concevez en Pygame par exemple, vous pouvez rapidement lui associer implicitement un environnement virtuel. Il s’agit donc de le créer puis de l’activer. Dans l’exemple suivant, l’environnement virtuel est nommé « venv ».
virtualenv venv
source venv/bin/activate
Ainsi, à partir de cette activation, tous les modules installés pour le projet le sont au sein de cet environnement virtuel, qui apparaît alors comme une sorte de « bulle logicielle » autour de votre projet.
Vous souhaitez alors partager votre projet, en fournissant à...
La PEP8
1. Contexte
PEP (en anglais Python Enhancement Proposal) représente un ensemble de documents sur lesquels les personnes impliquées dans l’évolution du langage Python se mettent d’accord.
Chaque PEP explore une fonctionnalité, un aspect du langage Python, et entérine une décision technique collective, qui peut concerner le langage lui-même (la syntaxe notamment) ou des aspects connexes au langage.
Vous pouvez trouver la première PEP, la PEP0, qui date de l’an 2000, à cette adresse : https://peps.python.org/
Nous allons essentiellement parler ici de la PEP8, qui date, elle, de 2001, et régulièrement modifiée jusqu’à 2013. La ressource relative à cette PEP est à cette adresse : https://peps.python.org/pep-0008/
2. L’esprit de la PEP8
Comme vous avez pu le voir, cette proposition PEP intitulée Style Guide for Python Code se positionne surtout sur la forme du code elle-même et pas tellement (voire pas du tout) sur des aspects de programmation logicielle.
Le but est qu’un développeur Python qui se retrouve à consulter un code Python compatible avec la PEP8 sera plus efficace car la forme du code est quelque chose dont il a l’habitude.
Cet aspect était peu présent dans la première édition de cet ouvrage. Le code proposé par la suite sera donc autant que possible respectueux de la PEP8, ce qui permet aussi d’avoir un code plus lisible.
3. Principes généraux et outils
a. Principes de la PEP8
Présentons quelques attentes relatives à la PEP8 :
-
L’encodage doit être UTF-8.
-
L’indentation doit être de 4 caractères exactement.
-
Une ligne doit faire 79 caractères au maximum (utiliser le passage de ligne au besoin).
-
Les imports de modules doivent être déclarés...