Introduction à Python
N. TSOPZE
Intro. (historique)
inspiré d’ABC et Créé à la fin des années 80 par
Guido, fan de de la série Monty Python's Flying Circus
1991, première version publique, le 0.9.0, postée sur
le forum Usenet alt.sources
1995, sortie du navigateur Tk pour exécuter les
applets Python avec modules de la bibliothèque
standard rexec, htmllib,…
1999, création de l'environnement de
développement IDLE
2000, publication de Python 2,0 par l’équipe
PythonLabs de BeOpen.
2001, création de Python Software Foundation
Intro. (historique)
Arrêt de l’évolutivité de Python 2 en janvier
2020 par la PSF
Cohabitation de Python 2 et Python 3
Plusieurs ajouts dans Python 3 non
supportés par python 2:
Division: / (réelle); // (entière)
Fonction d’affichage : print(arg) vs print arg
…
Intro.
Totalement gratuit et téléchargeables;
langage de programmation objet interprété,
multiparadigme (objet, fonctionnel,
procédural)
disponibilité sur la grande majorité des
plates-formes courantes (BeOS, Mac OS X,
Unix, Windows).
intégrations faciles avec les langages C et
C++
Premier pas
langages de script:
mode interactif
mode script / programme
Exécution de chaque commande saisie à
l’invite de commande (>>>);
Affichage immédiat du résultat
Création des variables à la première
utilisation
Manipulation des boucles
Regroupement des commandes dans un
fichier et appel du fichier
Premier pas
Mode interactif
Instructions sont directement interprétées et les résultats
affichés
réaliser des prototypes,
tester tout ou partie d’un programme ou plus simplement
interagir aisément et rapidement avec des structures de
données complexes
Exemple
>>> print (’hello world!’)
hello world!
Premier pas
Mode script / programme,
saisir l’intégralité des instructions qu’il
souhaite voir évaluer à l’aide de son éditeur
de texte favori,
demander leur exécution à l’interprète.
extension .py.
Structures de base
Commentaires
Commence par #
Variables
Objets dont les classes sont définies par l’usager, ou
par l’environnement Python (types de base).
manipulation les données au travers de références
(qui donnent accès aux fonctionnalités des instances).
typage dynamique
>>> x = 1 # x reference un entier
>>> x = ’toto’ # x reference desormais une chaine
>>> x = Foo() # x reference desormais une instance de Foo
Instructions de base
Affectation: =
X=2
a,b=b,a #Permuter a et b
Affichage: print
print(a)
print(‘’ la valeur de a est :’’ a)
Saisie: input # la valeur saisie est prise comme
une chaine de caractères
a=input()
a = input (" Entrer la valeur de a: ")
a=int(a) ##conversion
Opérations
Opérations arithmétiques
Addition :
Addition : +
Soustraction : -
Multiplication :
Multiplication : *
Division : / (réelle); // (entière)
Modulo : %
Forme contractée: +=, -=, *=, /=
Affichage : print # Tenir compte des descripteurs
Exemple
>>> x = 2
>>> x = x + 1
>>> x += 2
Chaines de caractères
Constante chaine de caractères sont placées entre les
guillemets (simple ou double)
Opérations:
Concaténation : +
Affichage : print
Accès aux éléments: ch[ i ], # i<0 pour commencer à la fin
Sous chaines : ch[deb:fin]
Exemples
>>>x = ’hello ’
>>> y = "world! ’’
>>> z=x+y
>>>x[2:4]
Variables
donnée du programme, stockée dans
l’ordinateur.
code alpha-numérique lié à une donnée de votre
programme, permettant de l'utiliser à plusieurs
reprises et faire des calculs un peu plus
intéressants avec.
Permet de stocker le résultat
mémoire : « grosse armoire » avec plein de
tiroirs.
Chaque tiroir peut contenir une donnée ; certaines de ces
données seront des variables de votre programme.
Listes
ensemble ordonné et dynamique d’éléments pouvant
être de différents types
Création de listes vides avec les deux manières
possibles: [ ] ou list()
>>> l1 = []
>>> l2 = list()
Exemple.
>>> x = True
>>> foo = [’bar’, 12345, x]
>>> foo
[’bar’, 12345, True]
Listes
Accès aux éléments :
Préciser l’index entre crochets
méthodes
append (val): ajout de val en fin de liste,
Insert(ind,val) : pour ajouter val à un index donné ind.
extend (l1): ajoute le contenu de la liste l1 passé en
paramètre à la fin de la liste.
index (val): index de la première occurrence d’un
élément dans une liste // exception ValueError en
absence.
in : True si l’élément est présent dans la liste et False
sinon.
Listes
remove permet de supprimer la première occurrence
d’un élément d’une liste en le désignant
del (delete) détruire une référence à un objet Python,
ou à une partie d’une liste.
>>> del foo[1:3]
+ : concaténation
Multiplication par un entier n : crée n copies de la liste
Listes
>>> foo.append(’new’)
>>> foo
[’bar’, 12345, 1, ’new’]
>>> foo.insert(2, ’new’)
>>> foo
[’bar’, 12345, ’new’, 1, ’new’]
>>> foo.extend([67, 89])
>>>foo.index(’new’)
>>>foo.index(34)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
ValueError: list.index(x): x not in list
>>> 34 in foo
False
Tableau (array)
Package array
Création
Import array
var=array.array(type, liste d’éléments)
a = arr.array('d', [1.1, 3.5, 4.5])
Accès aux éléments:
var[i]; ## avec i commençant à 0
var[n1:n2] #éléments de n1 à n2
var[:-n] #éléments de 0 à n
var[n:] #éléments de n à la fin
var[:] # du début à la fin
Ajout d’éléments
var.append(x) #ajout de x à la fin
var.extend([liste de valeurs] # ajout de la liste de valeurs à la fin
var.insert(i,x) ## insèrer x à la position i
Tableau (array)
Concaténer : +
var1+var2
Suppression d’éléments: remove
var.remove(x) # supprimer x
del var[i] # supprime l’élément N° i
Taille d’un élément : var. itemsize
nombre d'occurrences de x dans le tableau: var.count(x)
index de la première occurrence de x : var.index(x)
inverse l'ordre des éléments: var.reverse()
Tableau (array)
Code d'indication du Taille minimum en
Type C Type Python
type octets
'b' signed char int 1
'B' unsigned char int 1
'u' Py_UNICODE Caractère Unicode 2
'h' signed short int 2
'H' unsigned short int 2
'i' signed int int 2
'I' unsigned int int 2
'l' signed long int 4
'L' unsigned long int 4
'q' signed long long int 8
'Q' unsigned long long int 8
'f' float float 4
'd' double float 8
Tuples
Ensemble d’éléments de types (différents)
Création
En précisant les éléments entre les parenthèses
En terminant la liste par une virgule
Accès aux éléments: par indexation
Opérateur in: pour vérifier l’appartenance
d’un élément à la liste
Dictionnaires
tableaux associatifs,
ensembles non ordonnés d’éléments indexés
par des clés.
Une clé doit obligatoirement être immuable (chaîne,
entier ou tuple).
une clé est toujours unique.
Déclaration
deux accolades : {} ; {cle: 1, 23: ‘ABS’}
utilisant le type dict : dict (cle=valeur, cle=valeur)
ajout + accès aux éléments par indexation sur la
clé associé à l’élément.
Dictionnaires
Méthodes
Keys () : liste de toutes les clés du dictionnaire
has_key () : True si la clé donné en paramètre est
présente dans le dictionnaire et False sinon.
opérateur in : vérifier l’appartenance
Values () : liste des valeurs contenues dans le
dictionnaire
Items() : liste de tuples : (clé, valeur)
opérateur del : supprimer une association du
dictionnaire
Construction
La structuration d’un programme définie par son indentation.
Le début d’un bloc défini par un ‘:‘,
la première ligne considérée comme un en-tête (test, boucle,
définition, etc.).
la fin du bloc délimitée par le retour à l’indentation de l’en-tête.
La convention en Python est d’utiliser quatre espaces pour chaque
niveau d’indentation.
Imbrications possibles des bloc.
<en-tete>:
<instructions>
<en-tete>: <instruction> ## Bloc sur une seule ligne
Construction - Conditions booléennes
tout ce qui n’est pas faux est vrai.
Les données «vide» sont évaluées à FAUX :
False, None, 0, “ ", [], list(), {}, dict(), (), tuple()
opérateurs de comparaison
<, <=, >, >=, !=, ==, is
opérateurs booléens :
and, or, not
Exemple
>>> l1 = [1, 2, 3]
>>> l2 = [1, 2, 3]
>>> l1 == l2
True
>>> l1 is l2
False
Construction - If
Si condition alors instructions finsi
<instructions avant le test>
if <condition> :
<instructions du bloc "alors">
<instructions après le test>
Si condition alors instructions sinon instructions finsi
<instructions avant le test>
if <condition> :
<instructions du bloc "alors">
else :
<instructions du bloc "sinon">
<instructions après le test>
// présence de « : » pour délimiter les blocs
Construction - If
Si condition1 alors instructions sinon si condition2
instructions sinon instructions finsi
<instructions avant le test>
if <condition1> :
<instructions du bloc "alors">
elif <condition2>:
instructions
else :
<instructions du bloc "sinon">
<instructions après le test>
// présence de « : » pour délimiter les blocs,
// possibilité d’imbriquer plusieurs « elif »
Boucle pour
Syntaxe
for <var> in <sequence>:
<instructions>
[else:
<instructions, séquence épuisée sans break> ]
// […] indique l’aspect optionnel
exemple
X=0
For i in range(10,20):
x=x+i
Boucle pour
Séquences
range()
range(n): entiers de 0 à n
range(n1,n2) : entiers de n1 à n2
range(n1,n2,p) : entiers de n1 à n2 avec pour pas
p.
Liste de valeurs
liste=(4,1, 0, 5, -1)
Chaine de caractères
Décomposition caractère par caractère
Boucle pour
liste=(5, 10, 15, 23, 13, 29)
for nombre in liste:
print(’Le nombre est’,nombre)
for lettre in ’Hello World’:
print(lettre)
for i,l in enumerate(’Hello World’) :
print(i, l)
for mot in ’Hello World’.split():
print(mot)
Boucle while
Forme1 : sans alternative
<instructions avant la boucle>
while <condition>:
<corps de la boucle>
<instructions après la boucle>
Forme 2 : avec alternative
while <condition>:
<instructions>
else:
<instructions, condition fausse>
Boucle while
while n!= 10:
n = int(input(’Entrez un nombre ’))
if n< 10: print(’Trop petit’)
if n> 10: print(’Trop grand’)
else:print(’Bravo’)
Mots clés break et continue
break: arrêter une boucle quelle que soit la
condition de la boucle
while 1: # 1 est toujours vrai -> boucle infinie
lettre = input (" Tapez 'Q' pour quitter : ")
if lettre == "Q":
print ("Fin de la boucle ")
break
continue: permet de continuer l’exécution
d’une boucle, en repartant directement à la
ligne du while ou for
conditions
Opérateurs de comparaison
Égalité: ==
Différence: !=
Inégalité: <; <=; >; >=
Est (ou n’est pas): is (is not)
Opérateurs logiques
ET : and
Ou: or
Négation : not
Conditions (exemple)
programme est de déterminer si une année
saisie par l'utilisateur est bissextile
Une année est dite bissextile si c'est un
multiple de 4, sauf si c'est un multiple de 100.
Toutefois, elle est considérée comme bissextile
si c'est un multiple de 400
Fonction
définie avec le mot clé def.
Retourne toujours une valeur (return).
valeur None est alors retournée si pas de return
dans la fonction.
Syntaxe
def nom_fonction(paramètres) :
instructions
[ return liste des résultats]
Ou
f=lambda par1, par2,…parn : instruction de retour
Exemple : f = lambda x: x * x
Fonction
>>> def fib(n=5): # suite de fibonacci jusque n
a, b = 0, 1
while b < n:
print (b)
a, b = b, a + b
Fonction (commentaire - docstring)
Description affichée lorsque l’utilisateur veut
l’aide sur la fonction à travers la commande
help(nom_fonction)
se fait sur la première ligne après la déclaration
en utilisant des chaînes de caractères multi-
lignes, en utilisant des guillemets doubles
>>> def exemple():
"""Commentaires…
…
commentaires."""
pass
Fonction (paramètres)
objet mutable => en sortant de la fonction,
la modification est conservée
listes, dictionnaires, sets, objets custo, etc
objet immutable => en sortant de la
fonction, modification pas conservée
strings, int, floats, tuples, etc
Fonction (paramètres)
paramètres par défaut
Les valeurs valeurs val1, val2 sont utilisées si
à l’appel ces paramètres manquent
def ma_fonction (paramètres non initialisés
par1 =val1, par2=val2…):
Paramètres facultatifs
Permet de faire varier le nombre de
paramètres
def ma_fonction(obligatoires, * faciltatifs):
Fonction (portée des variables)
variables locales
accessibles seulement dans la fonction où elles sont
déclarées
variables globales
définies à l'extérieur d'une fonction
visibles de l'intérieur d'une fonction, mais la fonction
ne peut pas le modifier
Utiliser « global » pour la rendre modifiable
Exemple
a=2
def incrementer():
global a
a = a+1
manipulation de séquences
Filtre
filter applique la fonction passée en premier argument
sur chacun des éléments de la séquence passée en
second argument et retourne une nouvelle liste qui
contient tous les éléments de la séquence pour
lesquels la fonction a retourné une valeur vrai
Syntaxe
filter(fonction,liste)
Exemple
>>> def impair(x):
return x % 2
>>> list(filter(impair, range(20)))
Fonction (portée des variables)
variables globales – cas des objets mutables
Possibilité de les modifier dans une fonction
Exemple
def mafonction():
liste[1] = -127
liste = [1,2,3]
mafonction()
liste
[1, -127, 3]
Modules
permet de fournir des bibliothèques de fonctions,
structures de données, classes, à intégrer dans les
programmes
produire un module est identique à produire un
programme : faire un fichier.
définitions contenues dans un fichier utilisables
globalement ou unitairement
offrir l’accès aux fonctions à tout programme en ayant l’utilité
Ce fichier doit être dans le même répertoire que le programme
principal (ou bien se trouver dans le « path » de Python)’’. Utiliser
import os, os.chdir(‘repertoire de de travail’)
Modules
Précision du chemin (nécessaire sous linux)
#! Chemin
Exemple : #! /usr/bin/python3.2.
Précision du type d’encodage
# -*- coding :Encodage
Exemple : # -*- coding :Latin -1 -*
Test du module hors importation
if __name__ == " __main__ ":
Nom_du_module(paramètres)# lancement si le module est
#exécuté sans être importé
os. system (" pause ") -Optionel
Modules (exemple)
Nom du module ‘’calcul.py’’
’’ ’’ ’’ Petit commentaire pour l’aide ’’ ’’ ’’
def carre(valeur,n):
resultat = valeur**n
return resultat
def cube(valeur):
resultat = valeur**3
return resultat
Modules (importation)
Après l’enregistrement du module, on peut
importer
importe une seule fonction
from calcul import carre
importe explicitement les fonctions
from calcul import carre, cube
importe toutes les fonctions sauf les privés (commençant
par « _ »
from calcul import *
importe le module
import calcul ou import calcul as cal
Utilisation: cal.carre(), évite les conflits en modules
Modules (standard)
Module sys
paramètres et fonctions liées à l’environnement
d’exécution
Constantes
argv :paramètres passé sur la ligne de commande
argv[0] : nom du script.
stdin, stdout, stderr : Objets de type file (fichier) représentant les
entrées et sorties standard.
path : Séquence contenant les chemins de la variable
d’environnement PYTHONPATH.
Fonctions
exit([arg]) : fin à l’exécution d’un programme avec pour satut de
sortie arg
Modules (standard)
Module string
traitement des chaines de caractère
Constantes
string.ascii_letters : ensembles des lettres
string.ascii_lowercase : lettres minuscules
string.ascii_uppercase : lettres majuscules
string.digits : chaîne '0123456789'.
string.hexdigits : chaîne '0123456789abcdefABCDEF'.
string.octdigits: chaîne '01234567.
string.punctuation : caractères ASCII de ponctuation
string.printable: Chaîne de caractères ASCII affichables.
string.whitespace : chaîne comprenant tous les caractères ASCII
considérés comme espaces.
Modules (standard)
Module string
Conversion en majuscules : txt.upper()
Conversion en minuscules : txt.lower()
Découpage avec un séparateur : txt.split(car)
Remplacement de caractère:
txt.replace(‘’old", ’’ new")
Recherche de caractères : txt.find(‘car’)
‘car’ peut être une chaine
Modules (standard)
Module os
Manipulation des fonctions du système
Quelques fonctions
os.getcwd() : nom du répertoire courant
os.chdir(chemin):changer de repertoire courant
os.system(cmd) : exécution de la commande « cmd »
os.walk(chemin)
os.path.exists(chemin): existence du fichier
os.path.isdir(’rep’) : existence du répertoire « rep »
os.path.isfile(’chemin’): si chemin est un fichier
python3 -m pip install
Packages
Regroupement de plusieurs modules
Accès en fournissant un chemin vers le module
Installation de nouveaux packages, en ligne de
commande dos
Python –m pip install nomPackage
En pratique, ce sont des répertoires où peuvent se
trouver d'autres répertoires (d'autres packages) ou des
fichiers (des modules).
Importer des packages
import nom_du_package
import nom_du_package.nom_du_package
import nom_du_package as alias
Exceptions
Arrivent que Python rencontre une erreur
Forme minimale
try :
# Bloc à essayer
except :
# Bloc qui sera exécut é en cas d'erreur
try indique le bloc d'instructions à essayer.
except indique le bloc d'instructions qui sera exécuté si une
erreur est trouvée dans le premier bloc
Exceptions
try :
# Bloc de test
except type_de_l_exception
Pour une division:
NameError : l'une des variables numerateur ou denominateur
n'existe pas
TypeError : l'une des variables numerateur ou denominateur ne peut
diviser ou être divisée
ZeroDivisionError : Si denominateur vaut 0, cette exception sera
levée.
L’instruction « pass » dans un « except » indique de ne rien faire en
cas d'erreur
Exceptions (else)
Préciser de préciser les instructions à exécuter pour les types
d’exceptions dont le traitement n’est pas précisé avec except
try
resultat = numerateur / denominateur
except NameError :
print ("une des variables n’est pas dé finie .")
except TypeError :
print ("une des variables possède un type incompatible avec la
division .")
except ZeroDivisionError :
print ("La variable denominateur est é gale à 0.")
else :
print ("Le résultat obtenu est", resultat )
Exceptions (finally)
exécuter du code après un bloc try, quelle que soit le résultat de
l'exécution dudit bloc.
try :
# Test d'instruction (s)
except TypeDInstruction :
# Traitement en cas d'erreur
finally :
# Instruction (s) exécutée(s) qu'il y ait eu des erreurs ou non
manipulation de fichiers
Répertoire de travail
>>> import os
os.chdir("C:/dossier") où “dossier” existe sur le disque C
Connaitre le répertoire de travail
os.getcwd()
Ouverture du fichier
Fonction: open(‘’chemin du fichier’’, ‘’mode’’)
>>> mon_fichier = open("fichier.txt", "r") ## objet de classe TextIoWrapper
>>> mon_fichier
Mode
'r': lecture (Read).
'w': écriture (Write). Écrase si existe, crée sinon.
'a': ajout (Append).
‘b’ : pour une ouverture en mode binaire.
t, pour une ouverture en mode texte.
x, crée un nouveau fichier et l'ouvre pour écriture
manipulation de fichiers
Fermeture du fichier
Méthode close()
>>>Mon_fichier.close()
Lecture
Méthode: read()
>>> contenu = mon_fichier.read()
>>> print(contenu)
Ecriture
Méthode: write
Ne prend en paramètre que des chaines de caractères
>>>mon_fichier = open("fichier.txt", "w") # effacement du contenu!
>>> mon_fichier.write(« Hello World")
>>> mon_fichier.close()
manipulation de fichiers
Mot clé with
with open(mon_fichier, mode_ouverture) as variable:
Utiliser « variable » comme le fichier dans le programme
Fermeture du fichier à la fin, même si oubli
Sauvegarde des objets manipulés dans la session
importer le module pickle
Création du fichier de sauvegarde
>>> with open('donnees', 'wb') as fichier:
... mon_pickler = pickle.Pickler(fichier)
Sauvegarde d’un objet
>>>... mon_pickler.dump(objet)
Récupérer nos objets enregistrés
>>> with open('donnees', 'rb') as fichier:
... mon_depickler = pickle.Unpickler(fichier)
.. objet_recupere = mon_depickler.load()
manipulation de fichiers (CSV)
import csv
with open('test.txt') as csv_file:
csv_reader = csv.reader(csv_file, delimiter=',')
line_count = 0
for ligne in csv_reader:
if line_count == 0:
print(f' {", ".join(ligne)}')
line_count += 1
else:
print(f'\t{ligne[1]} {ligne[2]} a {ligne[3]}ans.')
line_count += 1
print(f'Effectif : {line_count} personnes.')
manipulation de fichiers (CSV)
import csv
with open('etudiant.csv', mode=‘w') as fich:
etud = csv.writer(fich, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
etud.writerow(['Embolo', 'Acturiat', 'M1'])
etud.writerow(['Ngassa', 'Big Data', 'M1'])
etud.writerow(['Dongmo', 'Ing Fin', 'M2'])
manipulation de bases de données
Installer le connecteur au SGBD
pip install mysql-connector (pour MYSQL – en ligne de commande)
Établir la connexion
import mysql.connector
conn = mysql.connector.connect(host="",
user=" ", password=" ",
database=" ")
cursor = conn.cursor()
Exécution d’une requète
cursor.execute(‘’ ‘’ ‘’ -- Corps de la requête – ‘’’’’’)
Validation de la requête : conn.commit()
Annulation de la requête: conn.rollback()
Fermeture de la connexion : conn.close()
manipulation de bases de données
conn = mysql.connector.connect(host="loclahost",
import mysql.connector user="root", password="", database="test")
import sys cursor = conn.cursor()
cursor.execute(sql_create)
sql_create = """ et= ("20T1257", "Toto", "pierre", 10)
CREATE TABLE IF NOT EXISTS cursor.execute("""INSERT INTO etudiant
etudiant( (matricule, nom, prenom, age) VALUES(%s, %s, %s,
matricule varchar(6) NOT NULL, %s)""", reference)
nom varchar(100) DEFAULT NULL, cursor.execute("""SELECT matricule, nom, prenom
prenom varchar(100) DEFAULT NULL, FROM Produits WHERE stock > %d """, (0, ))
age int DEFAULT NULL, rows = cursor.fetchall()
PRIMARY KEY(matricule), for row in rows:
CHECK (age>=18) ); """ print('{0} : {1} - {2}'.format(row[0], row[1], row[2]))
POO en Python
Classe
modèle suivant lequel on va créer des objets
Attributs: variables pour décrire des objets
Méthodes: fonctions pour manipuler la classe
syntaxe de déclaration :
class NomDeLaClasse:
constructeur : méthode de l’objet qui se
chargent de créer les attributs
Classe
class nomDeLaClasse: # Définition de la classe
""" Docstring pour la classe """
def __init__ ( self ): # Notre méthode constructeur
""" méthode pour initialiser les attribtus
"""
nomDeLaClasse.attribut=valeur
Exemple
class Personne : # Définition de laclasse Personne
""" Classe dé finissant une personne caractérisée par : son nom,
son prénom, son âge, son lieu de ré sidence """
def __init__ ( self ): # Notre méthode constructeur
""" Pour l'instant , on ne va dé finir qu'un seul attribut
"""
self . nom = " Toto"
Classe
Nom du constructeur: __init__()
Paramètre : self
Accès aux attributs: par la notation pointée (.)
Utilisation de la classe:
>>>Pers= Personne ()
>>>Pers.nom
‘Toto’
>>>Pers ##erreur car Pers est un objet
On peut aussi initialiser les autres attributs de
Personne dans le constructeur
Classe
class nomDeLaClasse: # Définition de la classe
""" Docstring pour la classe """
def __init__ ( self, parametre1, parametre2,…, parametren): # Notremé thode
constructeur
""" méthode pour initialiser les attribtus
"""
nomDeLaClasse.attribut1=parametre1
….
Exemple
class Personne : # Définition de la classe Personne
""" Classe dé finissant une personne caractérisée par : son nom, son prénom, son
âge, son lieu de résidence """
def __init__ ( self , nom, prenom): # Notre méthode constructeur
""" Pour l'instant , on ne va dé finir qu'un seul attribut"""
self . age= 33
self . nom = nom
self . nom = prenom
Classe
Attribut de la classe: attribut défini directement
dans le corps de la classe juste après la
docstring
Utilisation dans une méthode ou pas:
nomDeLaClasse.attribut
Exemple
class Compteur :
objets_crees = 0 # Le compteur vaut 0 au dé part
def __init__ ( self ):
Compteur . objets_crees += 1
Classe (méthodes)
class nomDeLaClasse :
…
def __init__ ( self ):
…
def methode1 (self, parametre1,parametre2,…)
…
def methode2 (self, parametre1,parametre2,…)
….
Utilisation
nomDeLaClasse.methode1(parametre1, parametre2,…)
Classe (méthode de la classe)
Méthode définie pour la classe, ne prend pas en
premier paramètre self, mais cls (classe de l’objet)
class Compteur :
""" attribut de classe qui s'incrémente à chaque 3 fois que l'on crée un objet de ce
type """
objets_crees = 0 # Le compteur vaut 0 au dé part
def __init__ ( self ):
""" À chaque fois qu'on crée un objet , on incrémente le compteur """
Compteur . objets_crees += 1
def combien (cls):
""" Méthode de classe affichant combien d'objets ont été créés """
print (" Jusqu 'à présent , {} objets ont été créés.".format (cls .
objets_crees ))
combien = classmethod ( combien ) #Python reconnaisse une méthode de classe
Classe (méthode statique)
Semblable à la méthode de classe, mais
sans paramètre; indépendante de toute
donnée
class Test :
""" Une classe de test tout simplement """
def afficher ():
""" Fonction chargée d'afficher quelque chose """
print ("On affiche la même chose .")
print ("peu importe les données de l'objet ou de la classe .")
afficher = staticmethod ( afficher ) # Pour indiquer à Python que la méthode est
#statique
Classe (encapsulation)
cacher ou protéger certaines données de l’objet
Rendre inaccessibles les attributs depuis l'extérieur
de la classe
Définir les accesseurs et les mutateurs pour y
accéder
Python utilise la notion de property, pour indiquer ce
qu’il faut si un utilisateur souhaite modifier ou
accéder à un objet:
la méthode donnant accès à l'attribut ;
la méthode modifiant l'attribut ;
la méthode appelée quand on souhaite supprimer l'attribut ;
la méthode appelée quand on demande de l'aide sur
l'attribut
Classe (encapsulation)
class nomDeLaClasse:
def __init__ (self , parametres):
…
self . _attr = valeur # présence du caractère « _ » devant le nom de
l’attribut « attr »
def _get_attr ( self ):
""" Méthode qui sera appelée quand on souhaitera accéder en
lecture à l'attribut attr '"""
print ("On accède à l'attribut attr !")
return self . _attr
def _set_attr (self , valeur ):
""" Méthode appelée quand on souhaite modifier le lieu de
résidence """
print (" Attention , modification de la valeur de l’attribut attr »)
self . _attr = valeur
# Informer Python que l’attribut attr pointe vers une propriété
attr = property ( _get_attr , _set_attr )
Classe (méthode spéciale)
Permet de contrôler la création et l’accès à l’objet
Moyen d'exécuter des actions personnalisées sur certains
objets, dans un cas précis
Forme du nom d'une méthode spéciale :
__methodespeciale__
Méthode __repr__(self): définit la façon dont est affiché
l'objet quand on tape directement son nom.
Méthode __str__(self) : utilisée pour afficher l'objet avec
print, __repr__ est utilisée si __str__ n’est pas définie
méthode __getattr__(self, attr): définit l’accès en lecture à
l’attribut attr
Méthode __setattr__ (self , attr , val_attr ) : définit l’accès
en écriture à l’attribut attr
Classe (héritage)
class A:
""" Classe A, classe parente"""
pass # laisser la définition vide ,
class B(A):
""" Classe B, classe fille qui hérite de A.
"""
pass
Classe (héritage)
class AgentSpecial ( Personne ):
""" Classe définissant un agent
spécial . Elle hérite de la classe Personne
class Personne : """
""" Classe repr é sentant une def __init__ (self , nom , matricule
personne """ ):
def __init__ (self , nom ): """ Un agent se dé finit par son
""" Constructeur de notre classe """ nom et son matricule """
self . nom = nom self . nom = nom
self . prenom = " Martin " self . matricule = matricule
def __str__ ( self ): def __str__ ( self ):
""" Mé thode appel ée lors d'une """ Méthode appelée lors d'une
conversion de l'objet en cha îne "" conversion de l'objet en chaîne """
return "{0} {1}". format ( self .prenom return " Agent {0}, matricule {1}".
, self . nom) format ( self .nom , self.
matricule )
Classe (méthode)
se servir de la notation
MaClasse.ma_methode(mon_objet) pour appeler une
méthode précise d'une classe précise
Exemple Personne . __init__ (self , nom) peut être
appelé dans def __init__ (self , nom , matricule ):
issubclass (B,A) : True si B est une sous classe de A et
False sinon
isinstance(obj, A) : True si obj est un objet de la classe A
Héritage multiple: class ClasseFille ( parent1, parent2 ):
Expressions régulières
moyen de rechercher et d'isoler des expressions d'une
chaîne de caractères
^ch (ch$) : rechercher en début (resp. fin) de la chaine ch
xt*y : chaine commençant par x, se terminant par y et
entre x et y 0 ou plusieurs t. + (à la place de *) : pour au
moins un t. ? pour 0 ou 1 fois
E{n} pour n fois le caractère E; E{n, m} : n à m fois
[abcd] : un des caractères parmi a, b, c et d.
[x-y]:caractères de x à y
Expressions régulières (module re)
Importer le module: import re
Quelques méthodes:
re.search(r ‘expr_reg’, ch): renvoie un objet de
classe _sre.SRE_Match si l’expression est
trouvée et None sinon
re. match ( expression , chaine ): vérifier si
l’expression est dans chaine