Python 2.x ma dwa sposoby na przeciążenie operatorów porównania, Ta prostota wydaje się odpowiadać moim potrzebom znacznie lepiej niż przeciążanie wszystkich 6(!) bogatych porównań. (Możesz jednak sprowadzić go do „tylko” 4, jeśli polegasz na „zamienionym argumencie”/zachowaniu odbitym, ale moim skromnym zdaniem skutkuje to wzrostem liczby komplikacji). < strong>Czy istnieją jakieś nieprzewidziane pułapki, o których muszę wiedzieć, jeśli przeciążę tylko Rozumiem Aktualizacja: Jak Christopher wskazano, __cmp__
lub „operatory porównań wzbogaconych”, takie jak klasa A (obiekt): def __init__(self, name, age, other): self.name = imię self.age = wiek self.other = other def __cmp__(self, other): attach isinstance(other, A) # założenie dla tego przykład return cmp((self.imie, self.wiek, self.other), (inne.imię, inne.wiek, inne.inne))
__cmp__
?<
, <=
, ==
itp. operatory mogą być przeciążane do innych celów i mogą zwracać dowolny obiekt, który im się podoba. Nie pytam o zalety takiego podejścia, a jedynie o różnice, gdy używa się tych operatorów do porównań w tym samym sensie, co w przypadku liczb.cmp
znika w 3.x. Czy są jakieś alternatywy, dzięki którym implementacja porównań jest tak łatwa jak powyższy __cmp__
?