d'abord le code:comparaison des types différents en python
class myClass(object):
def __cmp__(self, other):
return cmp(type(self), type(other)) or cmp(self.__something, other.__something)
Est-ce que ce type de production le même ordre que pour les autres types en python? Existe-t-il un idiome correct pour cela?
Un peu de regarder autour sur google je trouve des informations pertinentes dans le python docs. Citant:
Note de mise en œuvre: objets de différents types, à l'exception des numéros sont commandés par leurs noms de type; les objets des mêmes types qui ne supportent pas sont comparés par leur adresse .
Cela suggère que si je veux suivre ce comportement, je devrais utiliser
class myClass(object):
def __cmp__(self, other):
return (cmp(self.__class__.__name__, other.__class__.__name) or
cmp(self.__something, other.__something))
particulièrement regrettable est que je puisse avoir un mantaining temps extraordinairement difficile transitivité avec dict
s, ce qui est un cas particulier I avait espéré mettre en œuvre. Est-ce que j'ai même besoin de vérifier les types de mes arguments? est-ce que python me laisse même voir ça?
Pouvez-vous élaborer la question. Que voulez-vous dire par «produire le même ordre que pour les autres types en python»? –
Notez que cmp (dict(), str()) est différent de zéro. Je voudrais maintenir la transitivité avec mon type par rapport aux types prédéfinis, mais je ne suis pas sûr de savoir comment le faire. – SingleNegationElimination