Les dictionnaires sont des tableaux associatifs dans lesquels chaque clés est reliée à une valeur.
Un dictionnaire se crée avec des accolades.
dico = {} # Création d'une dictionnaire vide
dico = {'clé1' : 'valeur1', 'clé2' : 'valeur1', 'clé3' : 'valeur3'} # Création d'une dictionnaire avec 3 valeurs
Pour ajouter une valeur dans un dictionnaire, il faut indiquer une clé entre crochets.
mon_dico[clé] = valeur # Ajout de valeur à la "position" clé
Si on ajoute une valeur à une clé existante, cela remplacera l'ancienne valeur par la nouvelle.
À savoir : si on boucle sur un dictionnaire, Python nous renverra les clés :
for element in dico:
print(element) # Affiche clé1 puis clé2 puis clé3
Les dictionnaires sont des tableaux associatifs dans lesquels chaque clés est reliée à une valeur.
Un dictionnaire se crée avec des accolades.
dico = {} # Création d'une dictionnaire vide
dico = {'clé1' : 'valeur1', 'clé2' : 'valeur1', 'clé3' : 'valeur3'} # Création d'une dictionnaire avec 3 valeurs
Pour ajouter une valeur dans un dictionnaire, il faut indiquer une clé entre crochets.
mon_dico[clé] = valeur # Ajout de valeur à la "position" clé
Si on ajoute une valeur à une clé existante, cela remplacera l'ancienne valeur par la nouvelle.
À savoir : si on boucle sur un dictionnaire, Python nous renverra les clés :
for element in dico:
print(element) # Affiche clé1 puis clé2 puis clé3
PROGRAMMATION ORIENTÉE OBJET
La Programmation Orientée Objet (POO) est typique du langage Java. On peut cependant en faire avec Python ce qui peut être pratique pour certains projets.
La POO est une approche en programmation qui consiste à créer un programme composé d'éléments indépendants (les objets) qui sont chacun responsables de leurs propres attributs et méthodes.
Les classes peuvent être comparées à des "moules" permettant de dupliquer un objet. Chaque classe a ses propres attributs et méthodes.
Les attributs sont des caractéristiques d'un objet et les méthodes des actions réalisées par un objet.
En POO, tout commence avec une classe :
class Maclasse: # Le nom des classes commence toujours par une majuscule
Il y a ensuite la méthode de construction de la classe dans laquelle on définit les attributs de la classe. Cette méthode se définit avec le mot clé __init__ et a pour paramètres le mot clé self et le nom des différents attributs de la classe.
class Point: # Création d'une classe nommée Point
def __init__(self, x, y): # Il y a toujours self dans les paramètres. self fait référence à la classe qu'on est en train de définir.
self.x = x # On associe à chaque attribut de la classe (self.x) la valeur passée en paramètre (x)
self.y = y # Même raisonnement pour y
On vient de créer la classe la plus simple, c'est-à-dire une classe sans véritable méthode permettant de faire des actions. On peut donc juste lui donner des valeurs et les modifier.
L’intérêt de la POO est qu'à partir d'une classe, on peut créer pleins d'instance de cette classe. On utilise souvent la comparaison avec les moules à gâteaux : avec un seul moule (une classe) on peut créer pleins de gâteaux (des instances de classe) avec des goûts différents (valeur des attributs).
Création de deux instances de la classe Point :
pt1 = Point(4,8) # Une instance de la classe Point où x=4 et y=8
pt2 = Point(2,12) # Une autre instance de la classe Point où x=2 et y=12
pt1.x = 20 # Modification de l'attribut x de l'instance pt1 de la classe Point. x vaut maintenant 20.
Ensuite, on peut définir de nouvelles méthodes pour pouvoir faire des actions sur les instances de classe. À savoir que les noms de méthode sont souvent des verbes à l'infinitif.
Définition de deux méthodes :
def decaler_droit(self, decalage): # Il y a toujours self dans les paramètres.
self.x += decalage
def decaler_bas(self, decalage): # Il y a toujours self dans les paramètres.
self.y -= decalage
Pour utiliser une méthode, on précise le nom de l'instance (correspondant au self dans la définition de la méthode) puis on indique le nom de la méthode avec les valeurs de paramètres nécessaires.
pt1.decaler_droit(2) # L'attribut x de l'instance pt1 vaut maintenant 22 (20+2)
pt1.decaler_bas(3) # L'attribut y de l'instance pt1 vaut maintenant 5 (8-3)
Pour que Python nous renvoie la valeur d'un attribut d'une instance, il faut lui indiquer le nom de l'instance et celui de l'attribut, le tout séparé par un point.
print(pt1.x) # Affiche la valeur de l'attribut x de l'instance pt1, c'est-à-dire 22
Enfin, en POO, il existe des méthodes spéciales (repérables avec les doubles underscores entourant le nom de la méthode). La méthode méthode __init__ est par exemple une méthode spéciale.
Les méthodes spéciales sont des méthodes que l'on utilise non pas avec nomInstance.nomMéthode mais en utilisant directement certains mots clés de Python. C'est le cas par exemple des opérateurs arithmétiques, des opérateurs de comparaison ou de la fonction print.
Python arrive à faire le lien entre la méthode spéciale et le mot clé, c'est-à-dire que quand on utilise le mot clé, Python appelle la méthode spéciale.
Exemple de la méthode spéciale de print (nommé str sous Python) :
def __str__(self): # Le seul paramètre est self car quand on utilisera print, on précisera seulement l'instance de la classe.
return f'La valeur de x est {self.x} et celle de y est {self.y}' # Pour faire appel aux attributs, on utilise le même principe que précédemment c'est-à-dire nomInstance.nomAttribut. Dans la définition des méthodes, on fait référence à l'instance avec le mot clé self.
print(pt1) # Affiche 'La valeur de x est 22 et celle de y est 5'
Exemple de la méthode spéciale de l'opérateur + souvent appelée surcharge de l'addition (nommé add sous Python) :
def __add__(self, autrePoint): # Les deux paramètres sont self (instance depuis laquelle on appelle la méthode) et autrePoint
somme = Point(self.x + autrePoint.x, self.y + autrePoint.y) # Création d'une instance qui est l'addition entre les attributs des deux instances self et autrePoint
return somme
print(pt1+pt2) # Affiche 'La valeur de x est 24 et celle de y est 17'. Ici pt1 correspond à self et pt2 à autrePoint. On aurait pu remplacer pt1+pt1 par pt1.__add__(pt2).
Toutes les méthodes présentées dans cette fiche sont bien sûr à mettre dans la définition de la classe, de la même manière que la méthode de construction __init__.
Enfin, voici une liste non exhaustive des méthodes spéciales en Python :