True
, либо False
. Однако, может возвращать и любое другое значение, таким образом, если результат сравнения будет использован в контексте Булева типа (например в условии if
), Питон произведёт вызов bool() для интерпретации данного значения. class Moon:
r = 1737.10
def __ge__(self, other):
print('moon ge')
return self.r >= other.r
class Earth:
r = 6371.0
def __ge__(self, other):
print('earth ge')
return self.r >= other.r
my_moon = Moon()
my_earth = Earth()
is_ge = (my_moon => my_earth) # moon ge
is_ge # False
is_ge = (my_earth => my_moon) # earth ge
is_ge # True
is_ge = (my_moon => my_moon) # moon ge
is_ge # True
(x< y or x==y)
не подразумевает x<=y
. __ge__()
и __le__()
. +py3.4 Если операнды имеют различные типы и тип правого операнда является прямым или косвенным наследником типа левого операнда о метод-отражение правого операнда имеет приоритет, в иных случаях приоритет остаётся у метода левого операнда. При этом виртуальное наследование не учитывается.functools.total_ordering()
.Если у вас есть, что сказать, можете представиться и исправить ситуацию.