Warning: Undefined array key "DOKU_PREFS" in /home/clients/a4e6fc1ce1761b72982b805de0f418c4/web/python/mesrecettespython/inc/common.php on line 2082
classe_iterable [Les recettes Python de Tyrtamos]

Outils pour utilisateurs

Outils du site


classe_iterable

Warning: Undefined array key -1 in /home/clients/a4e6fc1ce1761b72982b805de0f418c4/web/python/mesrecettespython/inc/html.php on line 1458

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
classe_iterable [2009/08/31 20:34]
tyrtamos
classe_iterable [2009/10/19 18:51]
tyrtamos
Ligne 12: Ligne 12:
 Le code qui suit consiste à créer une classe qui possède la fonction "itérateur". Le code qui suit consiste à créer une classe qui possède la fonction "itérateur".
  
-===== Codage =====+===== Exemple de codage: simuler la fonction xrange() =====
  
 A titre d'exemple, on va créer une classe qui simule la fonction "xrange()", et on va l'appeler "xplage()". A titre d'exemple, on va créer une classe qui simule la fonction "xrange()", et on va l'appeler "xplage()".
Ligne 24: Ligne 24:
 La fonctionnalité "itérateur" est obtenue par: La fonctionnalité "itérateur" est obtenue par:
  
-  * la méthode __iter__() dont le contenu est défini+  * la méthode %%__iter__()%% dont le contenu est défini
   * la méthode next() qui teste la condition d'arrêt, incrémente le compteur et renvoie la valeur attendue   * la méthode next() qui teste la condition d'arrêt, incrémente le compteur et renvoie la valeur attendue
   * la condition d'arrêt qui déclenche une exception StopIteration   * la condition d'arrêt qui déclenche une exception StopIteration
Ligne 100: Ligne 100:
 En partant de ce principe, il est assez facile d'ajouter de telle fonctions d'itération à n'importe quelle classe. En partant de ce principe, il est assez facile d'ajouter de telle fonctions d'itération à n'importe quelle classe.
  
 +===== Exemple de codage: n'afficher que les lignes non-vides d'une fichier texte =====
 +
 +Même principe, voici le codage de la classe itérable:
 +
 +<code python>
 +class fichier(object):
 + 
 +    def __init__(self, nf):
 +        self.f = open(nf, 'r')
 + 
 +    def __iter__(self):
 +        return self
 + 
 +    def next(self):
 +        while True:
 +            ligne = self.f.readline()
 +            if len(ligne)==0:
 +                self.f.close()
 +                raise StopIteration
 +            ligne = ligne.rstrip('\r\n')
 +            if ligne.strip()!="":
 +                break
 +        return ligne
 +</code>
 +
 +Et voilà comment on s'en sert:
 +
 +<code python>
 +nf = r"C:\Chemin\test.txt"
 + 
 +for ligne in fichier(nf):
 +    print ligne
 +</code>
 +
 +
 +\\
 Amusez-vous bien! Amusez-vous bien!
  
classe_iterable.txt · Dernière modification: 2009/10/19 18:51 de tyrtamos