Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > fr.comp.lang.python > #3471
| From | Benoit Izac <use.reply.to@INVALID.ADDRESS> |
|---|---|
| Newsgroups | fr.comp.lang.python |
| Subject | Re: « Factoriser » un paramètre |
| Date | 2021-04-11 19:27 +0200 |
| Message-ID | <87y2dou3yg.fsf@izac.org> (permalink) |
| References | <s4utdp$335$1@cabale.usenet-fr.net> |
Bonjour,
Le 11/04/2021 à 15:26, Olivier Miakinen a écrit dans le message
<s4utdp$335$1@cabale.usenet-fr.net> :
> Dans une classe j'ai la méthode suivante. Peu importe le détail de ce
> qu'elle fait, le point important est tous ces « print » avec le paramètre
> « file=file ».
>
> def print(self, indent=0, *, file=sys.stdout):
> """Imprime un filtre auto-indenté"""
> print(" "*indent, end="", file=file)
> if self.neg: print("!", end="", file=file)
> if (self.t == "RE"):
> print(f"{self.key} /{self.regex.pattern}/", file=file)
> else:
> print(self.t, file=file)
> for subf in self.subs: subf.print(indent+1, file=file)
>
> Ma question : y a-t-il un moyen de « factoriser » ce paramètre, avec une
> syntaxe du style « with file=file », de façon à pouvoir le supprimer de
> tous les appels à la fonction print() ?
Je vois deux possibilités :
1. tu utilises file pour écrire :
def print(self, indent=0, *, file=sys.stdout):
"""Imprime un filtre auto-indenté"""
file.write(" "*indent)
if self.neg: file.write("!")
if (self.t == "RE"):
file.write(f"{self.key} /{self.regex.pattern}/\n")
else:
file.write(f'{self.t}\n')
for subf in self.subs: subf.print(indent+1, file=file)
2. tu remplaces le print() par le tiens :
def print(self, indent=0, *, file=sys.stdout):
"""Imprime un filtre auto-indenté"""
def print(*args, **kw):
kw['file'] = file
__builtins__.print(*args, **kw)
print(" "*indent, end="")
if self.neg: print("!", end="")
if (self.t == "RE"):
print(f"{self.key} /{self.regex.pattern}/")
else:
print(self.t, file=file)
for subf in self.subs: subf.print(indent+1)
> [
> Question subsidiaire : comment traduire au mieux le sens de « print » dans
> le commentaire au début de ma fonction ? Je n'ai pas l'impression que le
> terme « imprime » ni le terme « affiche » ne conviennent dans tous les cas.
> ]
Écrire la représentation du filtre dans « file » ?
Après vu que je ne sais pas trop ce que ça représente, c'est difficile
de dire.
--
Benoit Izac
Back to fr.comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar
« Factoriser » un paramètre Olivier Miakinen <om+news@miakinen.net> - 2021-04-11 15:26 +0200
Re: « Factoriser » un paramètre Benoit Izac <use.reply.to@INVALID.ADDRESS> - 2021-04-11 19:27 +0200
Re: « Factoriser » un paramètre Olivier Miakinen <om+news@miakinen.net> - 2021-04-11 20:40 +0200
Re: « Factoriser » un paramètre Benoit Izac <use.reply.to@INVALID.ADDRESS> - 2021-04-11 21:40 +0200
Re: « Factoriser » un paramètre Olivier Miakinen <om+news@miakinen.net> - 2021-04-11 22:04 +0200
Re: « Factoriser » un paramètre Alain Ketterlin <alain@universite-de-strasbourg.fr.invalid> - 2021-04-11 19:59 +0200
Re: « Factoriser » un paramètre Olivier Miakinen <om+news@miakinen.net> - 2021-04-11 20:51 +0200
csiph-web