Bonjour
Je voudrais qu'on me parle de __cmp__ sous P3. J'avais implémenté dans un objet P2 la méthode __cmp__ qui me permettait de les comparer. Or déjà ça ne fonctionne plus sous P3 et sur le net c'est dit que ce n'est plus supporté.
Je trouvais pourtant assez pratique d'implémenter en une seule fonction toute la gamme des possibilités "<", "<=", "==", "!=", ">", ">=". Maintenant je vais devoir rajouter dans mes algos dans les méthodes "__lt__" et ses consoeurs.
Par exemple pour comparer 2 dates, voici mon approche
Pratique sous P2. Maintenant je vais devoir à minima rajouter def __lt__(self, other): return date.__cmp__(self, other) < 0 sous P3 pour que ça fonctionne (et pareil avec tous les autres opérateurs).
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 class date(object): def __init__(self, jj, mm, aa): self.__jj=jj self.__mm=mm self.__aa=aa def __cmp__(self, other): if (self.__aa < other.__aa): return -1 if (self.__aa > other.__aa): return 1 if (self.__mm < other.__mm): return -1 if (self.__mm > other.__mm): return 1 if (self.__jj < other.__jj): return -1 if (self.__jj > other.__jj): return 1 return 0
Quelqu'un aurait-il la raison de cette suppression ? Peut-être que ma façon d'aborder la comparaison de deux objets n'est pas bonne.
Merci à tous
Partager