W Python3 The functools.total_ordering decorator pozwala na tylko przeciążenie __lt__
i __eq__
uzyskać wszystkie 6 operatorów porównania.python total_ordering: dlaczego __lt__ i __eq__ zamiast __le__?
ja nie rozumiem, dlaczego trzeba pisać dwóch operatorów, gdy jeden będzie mało, a mianowicie __le__
lub __ge__
, a wszyscy inni będą odpowiednio zdefiniowane:
a < b <=> not (b <= a)
a > b <=> not (a <= b)
a == b <=> (a <= b) and (b <= a)
a != b <=> (a <= b) xor (b <= a)
Czy tylko dlatego, że operator nie xor istnieje natywnie?
'xor' istnieje natywnie. –
@MartijnPieters tylko bitowe xor, czyż nie? –