Python-Entsprechung von Java's compareTo ()

8

Ich mache ein Projekt in Python (3.2), für das ich benutzerdefinierte Objekte vergleichen muss. Ich bin an OOP in Java gewöhnt, wo man eine Methode compareTo() in der Klasse definieren würde, die die natürliche Reihenfolge dieser Klasse angibt, wie im folgenden Beispiel:

%Vor%

Ich bin ziemlich neu in Klassen / Objekten in Python, also würde ich gerne wissen, was ist der "pythonische" Weg, um die natürliche Reihenfolge einer Klasse zu definieren?

    
astay13 26.06.2012, 21:00
quelle

2 Antworten

10

Sie können die speziellen Methoden __lt__ , __gt__ usw. implementieren, um die Standardoperatoren für benutzerdefinierte Typen zu implementieren. Weitere Informationen finden Sie in der Sprachreferenz .

Zum Beispiel:

%Vor%

Oder wie von stranac in den Kommentaren angegeben, können Sie die total_ordering Dekorator um ein wenig Tipparbeit zu sparen:

%Vor%     
poke 26.06.2012, 21:05
quelle
6

Python hat eine ähnliche Funktion: __cmp__() .

Ich sehe jetzt, dass Sie sich nach Python 3 erkundigen. Ihr "was ist neu" suggeriert :

%Vor%

So scheint es, dass Sie immer etwas wie

tun könnten %Vor%

oder

%Vor%

nach der Implementierung von __gt__() und __lt__() .

Was würdest du dann gerne benutzen:

%Vor%

Dies würde Ihnen die gleiche Funktionalität geben.

    
jedwards 26.06.2012 21:04
quelle

Tags und Links