Pages : 1
#1 Le 07/01/2021, à 11:01
- chris7522
class Fifo (python)
Bonjour a toutes et a tous,
J'ai cette classe :
from collections import deque
class Fifo:
def _init_(self):
self.queue = deque()
def _repr_(self):
contents = ",".join(str(item) for item in reversed(self.queue))
return f ' [Fifo {contents}]'
def incoming(self,item):
self.queue.insert(0,item)
def outgoing(self):
if sel.queue:
return self.queue.pop()
Je ne comprends pas bien la fonction repr() .
Es-ce que repr est un mot réservé ?
Je comprends ce que fait .join , mais pour le reste de cette fonction , que fait ' str(item) for item in reversed(self.queue) ' ? Est ce une compréhension de liste ?
que retourne ' return f' [Fifo {contents}] ' ?
Merci de votre aide .
Hors ligne
#2 Le 07/01/2021, à 12:04
- Compte supprimé
Re : class Fifo (python)
Bonjour,
Je ne comprends pas bien la fonction repr() .
Es-ce que repr est un mot réservé ?
Oui.
def __repr__() est appelée quand tu fait un print de ton instance. Elle permet de formater ta sortie comme tu le souhaites
>>> class Bidon:
... def __init__(self, mot):
... self.mot = mot
... def __repr__(self):
... return self.mot.upper()
...
>>> instance = Bidon('le vilain petit canard deviendra ...')
>>> print(instance)
LE VILAIN PETIT CANARD DEVIENDRA ...
>>>
Je comprends ce que fait .join , mais pour le reste de cette fonction , que fait ' str(item) for item in reversed(self.queue) ' ? Est ce une compréhension de liste ?
non , c'est une expression génératrice.
C'est équivalent à:
",".join((str(item) for item in reversed(self.queue)))
Pour ce qui est du fonctionnement de deque , je te laisse chercher dans la documentation. Savoir chercher est une compétence incontournable en programmation. Je dirais que l'informatique c'est 80% de recherche pour 20% de code.
Dernière modification par Compte supprimé (Le 07/01/2021, à 12:05)
#3 Le 07/01/2021, à 14:44
- chris7522
Re : class Fifo (python)
Bonjour,
chris7522 a écrit :Je ne comprends pas bien la fonction repr() .
Es-ce que repr est un mot réservé ?Oui.
def __repr__() est appelée quand tu fait un print de ton instance. Elle permet de formater ta sortie comme tu le souhaites
Bonjour pseudofab . Merci de ta réponse .
Il y a t il une difference entre ' def _repr_(self): ' et ' def _str_(self): ?
N'est ce pas le meme emploi ?
Hors ligne
#4 Le 07/01/2021, à 16:18
- Compte supprimé
Re : class Fifo (python)
Si dans le code, il y a que __str__() ou que __repr__() de définit, le compotement est identique.
Si dans le code, les deux sont présents. Alors print(instance) utilisera la méthode __str__() .
Dans ce cas la méthode __repr__() ne sera appellée que lorsqu'on montre l'instance sans passer par print().
Exemple sera plus parlant:
>>> class Bidon:
... def __init__(self):
... pass
... def __str__(self):
... return f"yop"
... def __repr__(self):
... return "truc"
...
>>> instance = Bidon()
>>> print(instance)
yop
>>> instance
truc
>>>
#5 Le 07/01/2021, à 18:48
- chris7522
Re : class Fifo (python)
Bien compris.
Une nouvelle fois , merci
Hors ligne
#6 Le 07/01/2021, à 19:09
- Compte supprimé
Re : class Fifo (python)
Avec plaisir. à bientôt ici ou ailleurs .
(nous avons déjà échangé ailleurs, mais tu l'ignores car perso, car j'ai un pseudo différent sur chacun des sites que je fréquente ... )
#7 Le 07/01/2021, à 21:21
- chris7522
Re : class Fifo (python)
Moi qui pensais vous faire souffler un peu avec mes questions incéssantes en alternant le forum ubuntu et développez.com !
Hors ligne
Pages : 1