Jaki jest najbardziej naturalny sposób wypełnienia poniższego kodu?Jak obsługiwać typy mieszane podczas wdrażania operatorów porównania?
import functools
@functools.total_ordering
class X:
def __init__(self, a):
self._a = a
def __eq__(self, other):
if not isinstance(other, X):
return False
return self._a == other._a
def __lt__(self, other):
if not isinstance(other, X):
return ... // what should go here?
return self._a < other._a
if __name__ == '__main__':
s = [2, 'foo', X(2)]
s.sort()
print s
Tylko powrót Fałsz lub Prawda nie jest dobrym pomysłem. Rozważmy przypadek, gdy masz inną analogiczną klasę Y i wykonaj X ("foo") X ("foo"). Wyniki mogą nie być spójne. –
user763305
Powraca jednak funkcja Nieudamierzone. Następnie Python użyje swojej własnej domyślnej kolejności, która jest nieco arbitralna, ale spójna. – user763305