Bonjour,
Petite devinette sur laquelle personnellement je seche et n'arrive pas a comprendre le comportement de Python:
Jusque la, tout va bien. La methode __iter__ n'est pas definie, mais on itere avec la methode __getitem__ jusqu'a obtenir une exception StopIteration.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 >>> class Semaine(): ... def __init__(self): ... self.jours = ['lun', 'mar', 'mer', 'jeu', 'ven', 'sam', 'dim'] ... def __getitem__(self, index): ... return self.jours[index] >>> x=Semai >>> list(x) ['lun', 'mar', 'mer', 'jeu', 'ven', 'sam', 'dim']
En revanche:
Personnellement, je m'attendais a obtenir une liste infinie, vu que la methode __getitem__ ne renverra jamais d'erreur, pourtant ce n'est pas le cas...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 >>> class Semaine(): ... def __init__(self): ... self.jours = ['lun', 'mar', 'mer', 'jeu', 'ven', 'sam', 'dim'] ... def __getitem__(self, index): ... if index <= len(self.jours): ... return self.jours[index] ... else: ... return 'oups' >>> x=Semaine() >>> x[99] 'oups' >>> list(x) ['lun', 'mar', 'mer', 'jeu', 'ven', 'sam', 'dim']
Quelqu'un aurait une idee pour expliquer ce comportement ?
Merci d'avance
Partager