У меня есть два уникальных объекта температуры, которые мне нужно сравнить друг с другом, однако, поскольку объекты могут быть равны, но имеют разные единицы, я столкнулся с трудностями, сравнивая их.Переопределение __eq__ и сравнение двух объектов
Например
t1 = Temperature(32.0, 'F')
t2 = Temperature(0.0, 'C')
Эти два объекта равны, но я не могу показаться, чтобы получить правильную реализацию __eq__
сравнить их
Вот что у меня есть исп.
class Temperature():
def __init__(self, temp = 0.0, unit = 'C'):
if float(temp) == str(temp):
raise ValueError('could not convert string to float: ' + "'" + str(temp) + "'")
else:
self.t = float(temp)
if unit.upper() not in 'CF':
raise UnitError('Unrecognized temperature unit ' + "'" + str(unit) + "'")
else:
self.u = unit.upper()
def __repr__(self):
return "Temperature({},'{}')".format(self.t, self.u)
def __str__(self):
return str(self.t) + '°' + self.u.upper()
def __eq__(self, other):
t1 = Temperature(self.t, self.u)
t2 = Temperature(other.t, other.u)
other.convert()
if t1.t == t2.t and t1.u == t2.u:
return True
return False
def convert(self):
t = Temperature(self.t, self.u)
if t.u.upper() == 'C':
t.t *= 1.8
t.t += 32
t.u = 'F'
return t
else:
t.t -= 32
t.t /= 1.8
t.u = 'C'
return t
Обратите внимание, что у меня есть метод для преобразования температуры с одного устройства на другой. Опять же, я не могу понять, как сравнивать два объекта, когда они находятся в разных единицах.
Просто нормализуется, когда вы сравните –
@PadraicCunningham Я еще несколько новых для Python, вам придется расширить немного. – 23k
Следите за ошибкой округления с плавающей запятой. – user2357112