Bonjour,
je test différent moyen de bien gérer et utiliser certaines données.
Ces données sont représenté par un ensemble de variables définie par un nombre limité de clé fixe. A l'image de ce que j'ai montré dans mon poste précèdant
Il existent donc les classes avec slots
Je suis tombé sur un tuto parlant de "MutableTuple": Voici un exemple test: (j'ai juste ajouté kwargs par moi même)
Quel est votre opinion sur cette methode?
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
34
35
36
37
38
39
40
41
42
43
44
45 from collections import Sequence class MutableTuple(Sequence): """Abstract Base Class for objects that work like mutable namedtuples. Subclass and define your named fields with __slots__ and away you go. """ __slots__ = () def __init__(self, *args, **kwargs): for slot, arg in zip(self.__slots__, args): setattr(self, slot, arg) for slot, arg in kwargs.items(): setattr(self, slot, arg) def __repr__(self): return type(self).__name__ + repr(tuple(self)) # more direct __iter__ than Sequence's def __iter__(self): for name in self.__slots__: yield getattr(self, name) # Sequence requires __getitem__ & __len__: def __getitem__(self, index): return getattr(self, self.__slots__[index]) def __len__(self): return len(self.__slots__) class Student(MutableTuple): __slots__ = 'first', 'last', 'grade' # customize #usage student = Student('Lisa', 'Simpson', 'A') print(student) first, last, grade = student print(first,last,grade) student[0] student[2] 'Lisa' in student 'Bart' in student student.first = 'Bart' for i in student: print(i) p1 = Student(first='type', last='etq', grade = 0) print(p1) p2 = Student(firt='truc', last='mach', grade = 0) print(p2)
J'ai vue sur internet que les tuples nommé était moins efficace que les dictionnaires quand on recherché les valeurs a l'aide de leur nom?
Je me demande s'il existe l’équivalent pour les dictionnaires: définir un dictionnaire avec des clés fixe a l'image de mutable tuple ?
Si quelqu'un peu m'orienter vers un exemple?
Quels sont les avantages et inconvénient entre ces différentes méthodes?
J'ai également l'intention d’effectué des contrôles sur ces données, et j'avais en premières intention envie d'effectué ces contrôlés avec une fonction interne à la classe représentant les données. Mais je pourrai tout aussi bien mettre ces contrôles dans la classe utilisatrice . Quel est la bonne pratique?
Partager