У меня есть класс Quantity
, и я хочу реализовать оператор __lt__
для перегрузки. Я реализовал метод, как показано ниже.
def __lt__(self, other):
if isinstance(other, Quantity):
return other.value < self.value
if isinstance(other, numbers.Real):
return self.value < other
raise NotImplemented
Когда я импортирую его в консоль python и пытаюсь выполнить его
>>> Quantity(1.2) > 1
Я получаю следующую ошибку
AttributeError: 'int' object has no attribute 'number'
И если я пытаюсь выполнить его следующим образом
>>> Quantity(1.2) < 1
Я получаю следующую ошибку
TypeError: '<' not supported between instances of 'Quantity' and 'int'
Кто-нибудь знает, как я могу реализовать перегрузку для работы с <
и >
?
Обновление
Вот полный класс
class Quantity:
def __init__(self, value):
self.value = float(value)
def __float__(self):
return self.value
def __repr__(self):
return 'Quantity({})'.format(self.value)
def __str__(self):
return str(self.value)
def __lt__(self, other):
if isinstance(other, Quantity):
return other.value < self.value
if isinstance(other, numbers.Real):
return self.value > other
raise NotImplemented
@property
def value(self):
return self._value
@value.setter
def value(self, value):
value = round(value, 10)
self._value = int(value * 1000) / 1000.0