Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 07/01/2021, à 12: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, à 13:04

Compte supprimé

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

>>> 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 ...
>>> 

     

chris7522 a écrit :

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. wink

Dernière modification par Compte supprimé (Le 07/01/2021, à 13:05)

#3 Le 07/01/2021, à 15:44

chris7522

Re : class Fifo (python)

pseudofab a écrit :

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, à 17: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, à 19:48

chris7522

Re : class Fifo (python)

Bien compris.
Une nouvelle fois , merci smile

Hors ligne

#6 Le 07/01/2021, à 20: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, à 22: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 ! big_smile

Hors ligne