zuerst den Code:Vergleiche unähnliche Typen in Python
class myClass(object):
def __cmp__(self, other):
return cmp(type(self), type(other)) or cmp(self.__something, other.__something)
Enthält diese die gleiche Ordnung erzeugen, wie für andere Arten in Python? Gibt es eine korrekte Idiom dafür?
Ein bisschen schaut sich um auf Google fand ich einige relevante Informationen in der python docs. Zitiert:
Umsetzung beachten Sie: Objekte verschiedenen Typen außer Zahlen durch ihre Typnamen geordnet; Objekte der gleichen Typen, die richtigen Vergleich nicht unterstützen, sind nach ihrer Adresse geordnet.
Dies deutet darauf hin, dass, wenn ich das Verhalten folgen will, ich
class myClass(object):
def __cmp__(self, other):
return (cmp(self.__class__.__name__, other.__class__.__name) or
cmp(self.__something, other.__something))
Besonders bedauerlich verwenden soll, ist, dass ich eine außerordentlich schwierige Zeit mantaining transitivity mit dict
s aufweisen, die ein Sonderfall ist I hatte gehofft zu implementieren.
Muss ich sogar die Arten meiner Argumente überprüfen? Lässt Python mich das sogar sehen?
Können Sie die Frage ausarbeiten. Was meinst du mit "erzeug die gleiche Reihenfolge wie für andere Arten in Python"? –
Beachten Sie, dass cmp (dict(), str()) ungleich Null ist. Ich möchte Transitivität mit meinem Typ vordefinierten Typen beibehalten, aber ich bin mir nicht sicher, wie ich das tatsächlich machen soll. – SingleNegationElimination