Bonjour
Je viens ici ouvrir une nouvelle discussion à propos d'un problème éventuel sur l'utilisation systématique du dictionnaire.
En effet, je me demande si le dictionnaire peut être un outil universel de gestion.
Je m'explique: imaginons que je veuille gérer une personne (nom, prénom, age). Instinctivement, je penserai au départ à un objet de ce type
Code python : 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 class cPersonne(object): def __init__(self): self.__nom=None self.__prenom=None self.__age=None def setValue(*args, **kwargs): for (k, v) in kwargs.iteritems(): if k == "nom": self.__nom=v continue if k == "prenom" : self.__prenom=v continue if k == "age": self.__age=v continue raise keyError def getValue(k): if k == "nom": return self.__nom if k == "prenom" : return self.__prenom if k == "age": return self.__age raise keyError
Puis, je peux partir sur ma gestion
etc...
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 personne=cPersonne() personne.setValue(nom="toto", prenom="alfred", age=18) print personne.getValue("nom") print personne.getValue("prenom") print personne.getValue("age")
Mais là, je me dis que je peux tout aussi bien partir directement sur un dictionnaire ce qui me simplifie en plus pas mal de code...
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 class cPersonne(object): def __init__(self): self.__data={"nom": None, "prenom": None, "age": None} def setValue(*args, **kwargs): for (k, v) in kwargs.iteritems(): if k not in self.__data.iterkeys(): raise keyError self.__data[k]=v def getValue(k): return self.__data[k]
Avec la même façon de s'en servir
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 personne=cPersonne() personne.setValue(nom="toto", prenom="alfred", age=18) print personne.getValue("nom") print personne.getValue("prenom") print personne.getValue("age")
Mais toutefois bien plus facilement évolutive (si je veux rajouter l'adresse je n'ai qu'une info à rajouter dans data). Alors en fait je me demande s'il y aurait une contre-indication quelconque (notamment sur la vitesse d'exécution) à envisager systématiquement la seconde manière de conception chaque fois qu'on doit gérer qqchose ??? Parce que quand je regarde divers objets par-ci par là (par exemple sur des exemples PyQt), c'est toujours la première conception qui est mise en oeuvre. Là je me dis que ceux qui ont programmé ces exemples ne sont pas des manches et ont donc sûrement dû avoir la même idée mais ils ne l'ont jamais exploitée.
Et donc peut-être je me dis que cette façon de concevoir des objets "tout dico" ne serait peut-être pas tiptop question perfos.
Donc si quelqu'un a un avis là-dessus...
Merci à tous de votre attention
Partager