Bonjour,
J'essaye de comprendre le fonctionnement de la POO en python; dans l'exemple suivant, le script est censé afficher la liste ordonnée des clients contenus dans le dictionnaire "client" et l'affichage doit se terminer par le nombre total de clients comptabilisés.
Bien entendu, l'affichage se fait par l'intermédiaire des méthodes "repr" et "cptr" de ma classe Bank.
J'arrive au résultat voulu mais j'ai le sentiment que mon code n'est pas optimisé : intégrer "client.values()" dans un tuple pour extraire la première entrée de mon dictionnaire afin de faire appel à ma méthode "cptr", ça marche mais je suis sur qu'il doit exister méthode plus efficace pour y parvenir.
Une autre piste que j'ai explorée sans parvenir au résultat voulu était de lancer "cptr" depuis "repr".
(Pour info : dans ce contexte, on considère que le code ne connait pas les clés du dictionnaire à l'avance; ils sont ici affichés afin d'illustrer mon propos).
Merci pour vos avis...
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 class Bank: compteur = 0 def __init__(self, nom=" X Client X", bal=0): self._nom = nom self._balance = bal Bank.compteur += 1 def __repr__(self): return "Nom client : {} - solde : {}".format(self._nom, self._balance) def cptr(self): print("Nombre de clients : {}".format(Bank.compteur)) client = {} client["c1"] = Bank("c1", 100) client["c2"] = Bank("c2", 50) client["c3"] = Bank("c3", 10) client["c4"] = Bank("c4", 200) from operator import attrgetter as ag aa = sorted(client.values(), key=ag("_nom")) print() [print(i) for i in aa] aa = tuple(client.keys()) bb = aa[0] client[bb].cptr()
Partager