utilisation de super pour appeler une methode de la classe parente dans la meme methode de la classe dérivée
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 :
Code:
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) |
ET voici la sortie :
...
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