Bonjour,
Je voudrais surcharger la classe file (pour dans un cas précis de fichier, filtrer certaines lignes, en modifier d'autres)
J'ai un problème de récursion infinie dans la méthode __iter__ que j'ai définie dans ma classe dérivée.
Comme si l'appel à super(classedérivéedefile,self).__iter__() appelait en fait classederiveedefile.__iter__ au lieu de file.__iter__
J'imagine que file a bien une methode __iter__, puisqu'on peut itérer dessus ?
Voici le code :
ET voici la sortie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 #!/usr/bin/python mport os import sys class MachinFile(file): def __init__(self, name, errfile, *args, **kwargs): self.errfile=errfile super(MachinFile,self).__init__(name, *args,**kwargs) def __iter__(self): for l in super(MachinFile,self).__iter__(): # est ce que ce n est pas le __iter__ de la classe derivee qui est appelée ? yield l+self.errfile with MachinFile("ess.py","search") as f: for l in f: print(l)
...
for l in s:
File "./ess.py", line 16, in __iter__
for l in s:
File "./ess.py", line 16, in __iter__
for l in s:
RuntimeError: maximum recursion depth exceeded while calling a Python object
Merci de votre aide
Partager