Bonjour à tous,
Voici une classe d’objets simplifiée pour illustrer mon problème:
Les fonctions compX sont des fonctions de comparaison personnalisées qui me permettent de trier des listes d’objets MonObjet de façon différente en passant comme paramètre la fonction de comparaison adéquate dans sort().
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 class MonObjet : def __init__ (self, ): self.var1 = sString self.var2 = sString ... def comp1 (self, other): ... def comp2 (self, other): ... def comp3 (self, other): ...
Ces tris se faisaient en comparant plusieurs attributs (string) des objets.
Problème: Ça fonctionnait bien dans Python 2. Mais je suis passé à Python 3.
Et il n’est plus possible de passer des fonctions de comparaison dans sorted.
http://docs.python.org/3.1/library/f...=sorted#sorted
On ne peut désormais passer qu’une fonction à un argument pour faire une clé.
La solution proposée pour combler ce manque me semble assez horrible:
http://code.activestate.com/recipes/576653/
Quelqu’un a une idée pour une solution plus élégante?
Merci d’avance.
PS. Qu’est-ce qui a pris aux dévs de Python 3 de virer ces possibilités de comparaison? Je me le demande encore.
Partager