Не уверен, что лучший способ дать название этому вопросу, но как я могу переопределить или выполнить min(a, b)
или max(a, b)
для объектов класса, который я создал?Я могу переопределить gt
и lt, как показано ниже, но я бы хотел переопределить min или max, чтобы я мог использовать что-то вроде max(a, b, c ,d)
.Класс также будет иметь несколько свойств, но я думаю, что для этого примера достаточно 2.
class MyClass:
def __init__(self, item1, item2):
self.item1 = item1
self.item2 = item2
def __gt__(self, other):
if isinstance(other, MyClass):
if self.item1 > other.item1:
return True
elif self.item1 <= other.item1:
return False
elif self.item2 > other.item2:
return True
elif self.item2 <= other.item2:
return False
def __lt__(self, other):
if isinstance(other, MyClass):
if self.item1 < other.item1:
return True
elif self.item1 >= other.item1:
return False
elif self.item2 < other.item2:
return True
elif self.item2 >= other.item2:
return False
Пример:
a = MyClass(2,3)
b = MyClass(3,3)
print(a > b)
# False
Я попытался переопределить __cmp__
, но это не похожеработа.
Хотел бы иметь возможность сделать max(a, b)
и вернуть b
объект