Title: Prsentation PowerPoint
1Réalisé par El Khamlichi Mohsin Heyvaert
Xavier
2Sommaire
Chap I ....
Introduction Chap II ..
Les types intégrés Chap III
. Les instructions Chap IV
. Les Fonctions Chap V .
. Les Modules Chap VI .
Les exeptions Chap VII
Les classes Chap VIII ..
. Les outils de Python
3CHAPITRE I INTRODUCTION
4 1. Un petit historique
En 1989, Guido Van Rossum commenca à
travailler sur Python qui nétait alors quun
projet lui servant doccupation durant les
vacances de Noël pendant lesquelles son bureau
était fermé. Le but de Guido était dinventer
un successeur au langage ABC, un langage
daprentissage peu apprécié dans le milieu
académique. Pour cela, il fit appel
directement à des utilisateurs Unix habitués au
langage C. il voulu que Python soit facilement
utilisable dans dautres langages et
environnement contrairement à ABC. Il y réussi
globalement Le nom Python donné au langage
provient dune série anglaise appelée Monty
Python Flying Circus
5 2. Apercu de ses caractéristiques
Langage Script Tout comme Perl, Tcl et Rexx,
Python fait partie des langages script
interpretés contairement à Java, au C/C qui
sont des langages compilés. Ce qui lui permet
dêtre plus rapide au develloppement, de
comporter moins de ligne (50 de moins). Par
contre, Il est plus lent à lexecution.
Portable Python est portable entre les
differentes variantes de Unix ainsi que sur les
OS propiétaires comme Mac OS, BEOs, MS-DOS et les
differentes versions de Windows
Gratuit Python est placé sous Général Public
License. Il est facilement downloadable sur
www.python.org
6Extensible Au-delà de la multitude de
librairies et de modules déjà existente, il est
possible den dévellopper pour ses propres
besoins.
Modulable Python permet de séparer les
programmes en modules qui peuvent être réutilisés
dans d'autres programmes en Python
Orienté Objet Python est orienté-objet. Il
supporte l'héritage multiple et la surcharge des
opérateurs.
Syntaxe aisée La syntaxe de Python est très
simple et, combinée à de nombreux types de
données évolués (comme les listes,
dictionnaires,tuples...), ce qui conduit à des
programmes à la fois très compacts et très
lisibles. De plus, Python ne nécessite aucune
déclaration de variable. Les variables sont
créées lors de leur première assignation.
7Peu derreurs Tout comme Java ou Ada, Python
porssède un systeme dexception qui facilite la
gestion des erreurs.
Gestion des ressources Python gère ses
ressources (mémoire, descripteurs de fichiers...)
sans intervention du programmeur, par un
mécanisme de comptage de références
Case sensitive
Une instruction par ligne
8 3. Domaines dapplication
- Scripts dadministration systemes
- ex Les programmes d'administration système
spécifiques à la distribution Red Hat Linux. - Tous les dévelloppement lié à linternet et en
particulier au web (moteur de recherche,
navigateur) - ex moteurs de recherche yahoo et infoseek
- Accès aux bases de donnée (contextuelle)
- Réalisations dinterfaces graphiques
utilisateurs. - Utilisation pour la résolution de calculs
scientifiques - ex Python est notamment utilisé pour les
fusée de la NASA -
9CHAPITRE II LES TYPES INTEGRES
10 1. Les types numériques
- Tableau des différents types numériques
11Les principaux opérateurs pour les types
numériques
- Tableau (dans un ordre de priorité croissant)
12Quelques remarques
-
- Lors de mélange de types numériques lors dune
opération, la réponse sera du type de lopérande
la plus complexe. - En Python, vrai signifie nimporte quel
nombre différent de zéro ou un objet
non vide faux signifie zéro, none et un objet
vide (un ex. a or b retourne le premier qui
est vrai et si les 2 sont faux, retourne celui de
droite (donc b)) - la dernière expression affichée est affectée à la
variable _ . Si on affecte une valeur à cette
variable, on crée une variable locale qui
masquera la globale. - Si nous faisons c d (où c et d sont 2
variables), c référencera le même objet que
d!!! Ainsi pour les listes, nous ferons une copie
de cette manière c d et pour les
dictionnaires, nous utiliserons la méthode copy,
c d.copy().
132. Les chaînes
- Déf. une chaîne séquence de caractères non
modifiable càd que si nous avons une chaîne
sdalut, on ne peut pas faire s0s mais on
devra faire sss1 (une réassignation) - DéclarationUne chaîne peut être déclarée avec
un simple guillemet ou un double. On utilise le
triple double quotes ( ) pour
entrer une chaîne de caractère sur plusieurs
lignes - Rq le type char en C est donc représenté par
une chaîne de taille 1 -
- On ne déclare donc pas la taille de la chaîne et
pour connaître sa longueur on peut utiliser len(
).
14Tableau des opérations
15Chaînes concaténation-répétition
- Exemple de concaténation gtgtgt mot
help a
gtgtgtmot helpa
pour la répétition gtgtgtmot3
helpahelpahelpa - Autre manière de faire
- gtgtgt help a helpa
- Rq. on ne peut pas concaténer une chaîne et un
nombre avec on doit dabord utiliser atoi()
pour convertir ce nbr en string et ensuite
concaténer
16Chaînes indiçage et extraction
- Représentation dune chaînes
- lindiçage est le fait de sélectionner un élément
de la chaîne. Un indice
positif indique que lon commence à compter par
la gauche et un indice négatif
que lon compte depuis la droite
ex s3 donnera e et s-5 donnera l - lextraction est le fait de sélectionner une
partie de la chaîne ainsi, s25 donnera nex
(le 5 nest pas compris)
17Suite
- Une valeur laissée vierge prend la valeur 0 à
gauche et la taille de la chaîne à droite (s5
gt s05 et s3 gt s3len(s)). - Un index qui est trop grand est remplacé par la
taille de la chaîne, un index de fin inférieur à
lindice de début retourne une chaîne vide (
s1100 donnera onexemple.py et s21 donnera
). - Différents exemples
- gtgtgt s-2 les deux derniers caractères
- gtgtgtpy
- gtgtgt s-0 équivalent à s0
- m
- gtgtgts-100 erreur
-
18 Remarques
- Les opérateurs de comparaison in et not in
vérifient si une valeur apparaît (ou non) dans
une séquence. - Les opérateurs is et is not vérifient si deux
objets sont réellement le même objet ceci se
justifie seulement pour les objets modifiables
comme les listes. Tous les opérateurs de
comparaison ont la même priorité, qui est plus
faible que celle de tous les opérateurs
numériques. - Les objets de type séquence peuvent être comparés
à d'autres objets appartenant au même type de
séquence. La comparaison
utilise l'ordre lexicographique les deux
premiers éléments sont
d'abord comparés, et s'ils diffèrent ceci
détermine le résultat de
la comparaison s'ils sont égaux, les deux
éléments suivants sont comparés, et ainsi de
suite, jusqu'à ce que l'une des deux séquences
soit épuisée.
193. Les listes
- Ont une même signification quen C une
collection dobjets. - Déclaration une liste de valeurs (ou éléments)
entre crochets séparés par des virgules. Les
éléments de la liste nont pas nécessairement le
même type. Voici une liste de 4 éléments gtgtgta
spam, eggs,100,1234 gtgtgta
spam, eggs,100,1234 - Comme les indices des chaînes, les indices des
listes commencent à 0, et les listes peuvent étre
découpées, concaténées(rapidité!!!!) Les listes
sont modifiables,on peut donc changer les
éléments individuellement remplacement,
destruction,... (cest lutilité dune liste!
Important lors des passages de paramètres des
fonctions )
20Tableau des opérations
21Un exemple
- gtgtgt a 'spam', 'eggs', 100, 1234
- gtgtgt a
- 'spam', 'eggs', 100, 1234
- gtgtgt a0
- 'spam'
- gtgtgt a3
- 1234
- gtgtgt a-2
- 100
- gtgtgt a1-1
- 'eggs', 100
- gtgtgt a2 'bacon', 22
- 'spam', 'eggs', 'bacon', 4
- gtgtgt 3a3 'Boe!'
- 'spam', 'eggs', 100, 'spam', 'eggs', 100,
'spam', 'eggs', 100, 'Boe!'
22Listes imbriquées (généralisées)
- L 'abc', (1,2), (3, 4), 5 ainsi, L1
donnera (1,2),(3,4) et L11 donnera
(3,4)
23Les méthodes de lobjet liste
- Voici toutes les méthodes des objets listes
- insert(i, x)
- Insère un élément à une position donnée. Le
premier argument est l'indice de l'élément avant
lequel il faut insérer, donc a.insert(0, x)
insère au début de la liste, et a.insert(len(a),
x) est équivalent à a.append(x). - append(x)
- Equivalent à a.insert(len(a), x).
- index(x)
- Retourne l'indice dans la liste du premier
élément dont la
valeur est x. Il y a erreur si cet élément
n'existe pas. - remove(x)
- Enlève le premier élément de la liste dont la
valeur est x. Il y a erreur si cet élément
n'existe pas.
24Les méthodes suite
- sort()
- Trie les éléments à l'intérieur de la liste.
- reverse()
- Renverse l'ordre des éléments à l'intérieur de la
liste. - count(x)
- Renvoie le nombre de fois que x apparaît dans la
liste.
25 Exemple pour les méthodes
- Un exemple qui utilise toutes les méthodes des
listes - gtgtgt a 66.6, 333, 333, 1, 1234.5
- gtgtgt print a.count(333), a.count(66.6),
a.count('x') - 2 1 0
- gtgtgt a.insert(2, -1)
- gtgtgt a.append(333)
- gtgtgt a
- 66.6, 333, -1, 333, 1, 1234.5, 333
- gtgtgt a.index(333)
- 1
- gtgtgt a.remove(333)
- gtgtgt a
- 66.6, -1, 333, 1, 1234.5, 333
- gtgtgt a.reverse()
- gtgtgt a
- 333, 1234.5, 1, 333, -1, 66.6
- gtgtgt a.sort()
- gtgtgt a
- -1, 1, 66.6, 333, 333, 1234.5
26Une fonction intégrée
- "filter(fonction, sequence)" renvoit une liste
(du même type, si possible) contenant les seul
éléments de la séquence pour lesquels
fonction(element) est vraie. Par exemple, pour
calculer quelques nombres premiers - gtgtgt def f(x) returnx2 ! 0 and x3 ! 0
- ...
- gtgtgt filter(f, range(2, 25))
- 5, 7, 11, 13, 17, 19, 23
274. Les Tuples
- Déf. Comme une liste, un tuple est une collection
ordonnée dobjets mais le tuple nest pas
modifiable . - Déclaration des valeurs (entre parenthèses)
séparées par des virgules gtgtgttuple(0,1.4,world)
- Pourquoi les tuples alors que nous avons les
listes?? La non-possibilité de modifier les
tuples assure une certaine intégrité car
nous pouvons être sûr quun tuple ne sera pas
modifié à travers une référence
ailleurs dans le programme.
28Tableau des opérations
29Tuple unpacking
- L'instruction t 12345, 54321, 'salut!' est un
exemple d' emballage en tuple (tuple packing). - L'opération inverse est aussi possible, par ex.
- gtgtgt x, y, z t
- Ceci est appelé, fort judicieusement, déballage
de tuple (tuple unpacking). Le déballage d'un
tuple nécessite que la liste des variables à
gauche ait un nombre d'éléments
égal à la longueur du tuple - A l'occasion, l'opération correspondante sur les
listes est utile list
unpacking.
Ceci est possible en insérant la
liste des variables entre des crochets carrés - gtgtgt a 'spam', 'oeufs', 100, 1234
- gtgtgt a1, a2, a3, a4 a
30 5. Les Dictionnaires
- Déf. Un dictionnaire est un ensemble non ordonnés
de couples clévaleur avec comme contrainte que
les clés soient uniques (dans un même
dictionnaire). - Déclaration des couples clévaleur séparés par
des virgules et entre accolades gtgtgt dico
japon' 'japan', chine' 'china' - Un dictionnaire, à la différence des séquences
qui sont indexées par un
intervalle numérique (cf.liste,chaîne,tuple),est
indexé par une clé qui peut
être nimporte quel type non-modifiable
(les chaînes,les nbrs et les
tuples sils ne contiennent que des éléments non
modifiables)
31Tableau des opérations
32Un exemple
- gtgtgt tel 'jack' 4098, 'sape' 4139 gtgtgt
tel'guido' 4127 gtgtgt tel 'sape'
4139, 'guido' 4127, 'jack' 4098 gtgtgt
tel'jack' 4098 gtgtgt del
tel'sape' gtgtgt tel'irv' 4127 gtgtgt
tel 'guido' 4127, 'irv' 4127, 'jack'
4098 gtgtgt tel.keys() 'guido', 'irv',
'jack' gtgtgt tel.has_key('guido') 1
336. Les fichiers
34Le module Pickle
- C'est un module étonnant qui peut prendre presque
n'importe quel objet Python, et le convertir en
une représentation sous forme de chaîne de
caractères ce processus s'appelle pickling.
Reconstruire l'objet à partir de sa
représentation en chaîne de caractères s'appelle
unpickling. Entre pickling et unpickling, la
chaîne de caractères représentant l'objet a pu
avoir été enregistrée dans un fichier, ou avoir
été envoyée à une machine éloignée via une
connexion réseau. - Si vous avez un objet x, et un objet fichier f
ouvert en écriture,
la voie la plus simple de pickler'' l'objet
prend seulement une
ligne de code - pickle.dump(x, f)
- Pour unpickler'' l'objet, si f est un objet
fichier ouvert en lecture - x pickle.load(f)
35CHAPITRE III LES INSTRUCTIONS
361. Le test if
Linstruction IF peut comporter
plusieurs tests conditionnels elif et se
termine par un bloc optionnel else. Le bloc qui
sera executé, sera le premier ou la condition
sera vrai sinon se sera le bloc else sans
condition qui sera executé. Le if
sécrit de la forme suivante
if lttest1gt ltinstructionsgt elif lttest2gt
ltinstructionsgt ..... else
ltinstructionsgt
!!! ATTENTION à lindentation !!!!
372. La Boucle While
Comme dans beaucoup dautres langages, la
boucle while éxecute un bloc tant que la
condition darrêt est vérifiée. La particularité
de ce while est quil peut y avoir un else
optionnel dont le bloc sera éxecuté lorsquon
sort de la boucle while lttestgt
ltinstructionsgt else ltinstructionsgt
38Un exemple X0 While xlt6 print
Dans le boucle while x vaut , x
xx1 else print Dans le else
x vaut ,x
39Utilisation du break, continue, pass
- Ces trois instructions permettent à
lutilisateur davoir un plus grand contôle de la
boucle. - Comme en C, linstruction break permet de
sortir de la boucle instantannément et de passer
à la suite. Elle annule le passage dans la boucle
else. - Listruction continue saute au début de la
boucle la plus imbriquée. - pass ne fait rien du tout mais, comme on ne
peut avoir une expression qui nest suivie de
rien, pass peut être utilisé pour combler ce
vide.
40Exemple y0 While ylt6 if y4
break else print
Dans la boucle while, y vaut , y
yy1 else print dans le else
y vaut , y
413. La Boucle For
La boucle for fonctionne sur les chaînes, les
listes, les tuples et dautes objets issus de
classes. Elle commence par une ligne den-tête
qui spécifie une cible daffectation, ainsi quun
objet qui sera itéré for ltciblegt in
ltobjetgt ltinstructionsgt
else ltinstructionsgt Ici
encore, le else est mis en fin de boucle pour la
même raison que dans la boucle while vue
précédemment. Le for de Python fonctionne
différemment que celui du C, il affecte les
objets de lélément séquence à la cible un par un.
42Exemple X ichi un , ni
deux , san trois , chi
quatre Print Les clefs du dictionnaire
sont ,x.keys() Print Les Valeurs du
dictionnaire sont , x.values() For i in
x.keys() print La clef est s la
valeur est s (i,xi)
43Le Range
Linstruction range permet de créer une liste
croissante dentiers successifs compris dans une
certaine borne dépendant du nombre de paramètres
de linstruction 1 paramètre entiers compris
entre 0 et le paramètre 2 paramètres entier
compris entre param1 et param2 3 paramètres
entier compris entre parm1 et param2 et de pas
param3
Ex for i in range(10,20,2)
print i Ce qui donne 10
12 14
16 18
44CHAPITRE IV LES FONCTIONS
451. Définition
Outre les fonctions de bases de
Python, il est possible den définir de nouvelles
grâce à linstruction def . Il faudra bien sur
à nouveau veiller à lindentation car en python,
il ny pas de délimiteur pour définir les
scopes. format def nom_fct
(arg1,arg2,,argn)
ltinstructiongt return
ltvaleurgt Lorsquon quitte la fonction
valeur va directement être assignée à la fonction
appelante. Elle peut être de tous type puisque il
ny a pas de déclaration de type sous python.
462. Les arguments
La forme générale pour passer des arguments
est nom_fct(arg1,arg2,,argn) Il est possible
de définir des paramètres par défaut pour un ou
plusieurs arguments. Ce qui crée une fonction qui
pourra être appelée avec moins darguments que ce
qui a été défini. Ex def nom_fct (arg10,
arg22,,argn hello world ) Les fonctions
peuvent être appelées en utilisant des arguments
mots-clés de la forme motclévaleur Ex def
perroquet (voltage, etatc\est du
solide,actionvoom) print
-- Ce perroquet ne feras pas , action,
print -- si vou le mettez sous ,
voltage, volts. print --
Ca , etat, ! pourrait être appelé
de lune des façons suivantes
perroquet (1000) perroquet (action
vooooooom, voltage 1000000)
47Toujours Les arguments
Une fonction peut être appelée avec un nombre
darguments arbitraire. Il est possible de les
envoyer sous deux formes différentes Soit par
dictionnaire Définition Def nom_fct
(arg)
pass Appel nom_fct (arg11, arg22) Soit par
tuple Définition def nom_fct (arg)
pass Appel nom_fct
(arg1,arg2)
483. Les formes Lambda
Suite à la demande populaire, quelques
caractéristiques trouvée habituellement dans les
langages de programmation fonctionnelle et dans
Lisp ont été ajouté à Python. Avec le mot-clé
lambda , de petites fonctions anonymes peuvent
être crées. Elles sont limitées syntaxiquement à
une expression unique. Ex flambda x,y,z
xyz f(2,3,4) ce qui donne 9
49CHAPITRE V LES MODULES
50 1. Définition
- Un module est un fichier contenant des
définitions et des instructions Python. Le nom du
fichier est le nom du module auquel est ajouté le
suffixe .py. - Avantages - permet de relancer un même
programme sans tout réécrire
(en créant éventuellement un script).
- dutiliser dans plusieurs programmes une même
fonction sans la réécrire dans chaque
programme.
-
- Chaque module a sa propre table de symboles
privée, qui est utilisée comme table de symbole
globale par toutes les fonctions définies dans le
module. Ainsi, l'auteur d'un module peut utiliser
des variables globales dans le module sans
s'inquiéter des désaccords accidentels avec les
variables globales d'un utilisateur.
512. Les instructions
- L'instruction "import ltmodulegt" importe
tout le module ltmodulegt, en exécutant le total du
module. Le module est exécuté en premier avant de
pouvoir travailler sur les objets.Pour utiliser
ensuite le module, nous écrirons ltmodulegt.nom. - L'instruction "from" s'utilise avec
"import" de la manière "from ltmodulegt import
ltnomgt". Là seulement l'objet ltnomgt du module
ltmodulegt sera importé, le code restant du module
sera aussi exécuté, mais les objets ne
seront pas mémorisés et les éventuelles variables
ne seront pas affectées. Si ltnomgt est
remplacé par ,
on obtient alors une copie de tous les noms
définis a la racine du module.Pour utiliser
ensuite nom, nous écrirons juste ltnomgt.
52- Rq. La grande différence entre "import ltmodulegt"
et "from ltmodulegt import " est que les noms ne
sont pas mémorisés sur le même niveau. Le premier
sera mémorisé sous le nom du module, tandis
qu'avec "from" la valeur est directement visible
dans la racine (car dans la table des symboles
globaux cest donc là que nous la modifions et
pas dans le module!!!! Voir exemple). - La fonction "reload" est en fait un fonction se
trouvant dans __builtin__ (comme print), cette
fonction s'exécute par "reload(ltnomgt)" et a
pour but de recharger le module ltnomgt.
Le code du module sera de
nouveau exécuté depuis le début et les variables
qui auraient pu changer
seront remises à leurs valeurs d'origine. Refaire
un import ne servirait à rien car le module est
déjà chargé. - La fonction intégrée dir() est employée pour
découvrir les noms qu'un module définit. Elle
renvoie une liste triée de chaînes de caractères.
53B
B
B
G
G
G
L
L
L
copie
(2)Import ltmodulegt
(1)from import
module appelant
Avec (2), il faut refaire un reload pour
récupérer la valeur initiale. Avec (1), il suffit
donc de refaire fromimport pour récupérer la
valeur qui na pas été modifiée dans sa table (
du module appelé)
Légende L local, G global, B built-in.
Scope Le modèle LGB
54Exemple
- Illustration de la remarque
- contenu du module mon_module
num12 fin du module
mon_module (.py) on est dans
linvite interactive
gtgtgtfrom mon_module import num
gtgtgt print
num 12
gtgtgtnum24 gtgtgtprint num
24 gtgtgtfrom mon_module import num
équivalent du reload gtgtgtprint
num 12 ne fonctionne pas avec les types
modifiables
55CHAPITRE VI LES EXCEPTIONS
56 1. Définition
- Comme en Ada ou en Java, il existe un
mécanisme de contrôle des erreurs dexécution ,
les exeptions.Le traitement dune exception
permet de passer par dessus un bout de programme. - Dans Python , il existe deux types dexception
- celles présentent dans la table des exceptions
de Python - celles créées par lutilisateur
-
57 2. Comment gérer ces exceptions ???
Il est possible décrire des programmes qui
prennent en charges des exceptions
spécifiques. Ex try print 1.0
/ 0 except ZeroDivisionError
print ' n'a pas d'inverse
else pass Lorsque linstruction try
est rencontrée, on execute dabord la clause
dessai . Si une exception se produit, le reste
de la clause try est ignorée. Dans le cas
contraire, on ignore la clause dexception. Si
une exception se produit qui ne correspond pas à
lexception dans la clause except, elle est
renvoyée aux instructions try extérieures.
Sil ny a pas de prise en charge, Python
affichera un message derreur.
58 Linstruction else est une clause par
défaut qui doit suivre toutes les clauses
dexeptions. Elle permet dexecuter la suite du
programme dans le cas où aucune exception ne
serait survenue. Quand une exception survient,
elle peut avoir une valeur associée, appelé
argument de lexeption. Ex try
spam() except NameError, x
print nom, x,non défini ce qui
affichera nom spam non défini.
59 3. Comment déclencher une exception??
Linstruction raise permet à lutilisateur
de déclencher une exception. Par exemple
def myfunc() raise EOFError
try myfunc() except EOFError
print erreur di/O !! Else
print Et voilà
60 4. Créer ma propre exception Cest
possible ???
Oui !!!! Il suffit daffecter une chaîne de
caractères à une variable Ex MonErreur
Une erreur def mafunc()
raise MonErreur, survenue try
mafunc() except
MonErreur, value print
mon erreur est s! value else
pass
61 5. Actions de nettoyage
Linstruction try contient une autre
clause exceptionnelle qui permet de définir les
actions de nettoyage qui doivent être éxecutées
impérativement. Ex def divise(a,b)
return a/b for x in range(1.0,5.0,1.0)
try result
divise(x,x-4) print Le
résultat est f result finally
print cette ligne est
exécutée quoi quil se passe rem La
clause de finalisation est éxecutée quune
exception est executée ou non..
62CHAPITRE VII LES CLASSES
631. introduction
Python offre la possibilité de programmer en
Orienté objet. Le mécanisme de classe en
Python est un mélange des mécanismes de classes
de C et de Modula-3. Ex Comme en c, tous
les membres dune classe sont publics, et toutes
les fonctions membres sont virtuelleS.Il ny a
pas de constructeur ni de destructeur
particulier. Comme en Modula-3, il ny a
pas de raccourcis pour faire référence aux
membres dun objet à partir de ses méthodes.
642. La synthaxe
La forme la plus simple de définition de
classe ressemble à ceci class Nomclasse
ltinstruction1gt
ltinstructionNgt Dans la pratique, les
instructions à lintérieur de la définition de
classe seront souvent des définitions de
fonctions, mais dautres
instructions sont acceptées. Lobjet classe
permet deux types dopération La réferenciation
des attributs et linstanciation. La réference
dattributs Nomclasse.i où i est un attribut
de Nomclasse est une réferences dattribut
valide. Linstanciation(création dune
instance (objet) Nomclasse)
xNomclasse() affecte la nouvelle instance à la
variable x
653. A lintérieur de la classe
- On trouve deux types dattributs
- données (idem que les données membre en C)
- Les méthodes (idem que fonction membre en C)
- Les données
- Les données nont pas besoin dêtre
déclarée Comme les variable locale, elles
apparaissent lorsquon leur affecte une valeur la
première fois. - ex class MaClasse
- def f(x)
- print hello
World - i123456
- x MaClasse()
- x.compteur 1 creation de
lattribut compteur
662) Les méthodes Une méthode est appelée comme
en C x.f() Vous avez surement
remarqué que la fonction f définie dans MaClasse
a été appelée sans paramètre alors que la
définition en contenait un. Ca devrait
normalement déclencher une exception. Mais il
nen est rien car la particularité des méthodes
est que lobjet est passé comme premier argument
de la fonction. Le plus souvent par convention
appelé self pour amélioré la lisibilité du
programme .
Lappel x.f() est
donc équivalent à MaClasse.f(x). Il nest
pas nécessaire que la définition de la méthode
soit comprise dans la définition de la
classe. Ex def f1 (self,x,y)
return min(x,xy) class C
ff1
67Méthodes prédefinies
Python contient une liste de méthodes dites
spéciales
68En particulier, la méthode __init__(self)
Lorsquune class définit la méthode spéciale
__init__(), linstantation de la classe appelle
automatiquement cette méthode. Il sagit en
fait de ce quon appel en C/C un constructeur.
Bien sûr, la méthode __init__() peut prendre
autant de paramètre quon le vaut, pour une
flexibilité accrue Ex class Complexe
def __init__(self, partiereelle,
partieimaginaire) self.r
partiereelle self.i
partieimaginaire x Complexe(3.0,-4.5)
x.r, x.i donne (3.0, -4.5)
694. Lhéritage
La syntaxe pour définir une classe dérive est la
suivante Class Nomclassedérivée
(NomClassedeBase) ltinstruction1gt
ltinstructionNgt Rem A
la place de dun nom de classe de base, une
expression est acceptée. Ce qui est utile lorsque
le définition de la classe de base se trouve dans
un autre module.. Ex class NomClasseDerivee(nomm
od.NomClasseDeBase) Lexécution dune
définition de classe dérivée se déroule
comme une classe de base. Quand lobjet classe
est construit, la classe de base est
mémorisée.Cest ce qui permet de trouver
facilement un attribut. Lorsquun attributs est
réferencé, il est recherché dans la classe
dérivée sil ne sy trouve pas on le recherchera
dans la classe de base.
70 5. Lhéritage multiple
Python supporte également lhéritage multiple.
Une définition de classe avec plusieurs classes
de base ressemble à Class NomClasseDerivee
(Base1,Base2,..,BaseN) ltinstruction1gt
ltinstructionNgt Lorsquon
référence un attribut, la recherche seffectue en
profondeur càd de gauche à droite? Donc si un
attribut nest pas trouvé dans ClasseDerivee, on
le cherchera dabord dans base1, puis dans base2,
et ainsi de suite jusquà ce quon le trouve Rem
Il faut faire attention aux conflits
accidentelles!! Par exemple, si on crée
une classe dérivée de deux autres classes
dérivées de la même classe de baserisque de
problèmes!!!!
71CHAPITRE VIII LES OUTILS DE PYTHON
72 732. Exemple dutilisation de GUI (Graphic User
Interface)
- file hello
- !/usr/local/bin/python
- from Tkinter import get
widget classes - class Hello(Frame)
container subclass - def __init__(self, parentNone)
- Frame.__init__(self, parent) do
superclass init - self.pack()
- self.make_widgets()
- def make_widgets(self)
- widget Button(self,
- text'Hello world',
- command self.onPress)
- widget.pack(sideLEFT)
- def onPress(self)
- print "Hi."
74FIN