Мне нужен метод отраженной магии «больше, чем», и, похоже, он не существует. Вот ситуация. У меня есть класс, который отслеживает единицы. Это свойство вызова. У меня есть метод магического метода для обработки сравнений, но он не работает, когда я помещаю свойство справа. Вот пример:отражено больше, чем магические методы
class Property():
def __init__(self, input, units):
self.value = input
self.units = units
def __gt__(self, other):
if isinstance(other, Property):
return self.value.__gt__(other.value)
else:
return self.value.__gt__(other)
def __float__(self):
return float(self.value)
if __name__=='__main__':
x = Property(1.,'kg')
y = Property(0.,'kg')
print y > x
print float(y) > x
print y > float(x)
Так что, если вы запустите это вы увидите результат: значение False, True, False, потому что средний пример выполнения поплавок> Свойство, которое использует встроенный> не> Я определил используя магические методы. Мне нужен волшебный метод, который будет использоваться, когда свойство находится справа. Разве это не так? Если нет, как я могу написать это, чтобы можно было сравнить любую комбинацию значений и моего собственного класса. Я бы не хотел иметь никаких правил для сравнений. IE, я не хочу, чтобы просто никогда не смог сравнить float с собственностью.
Будьте осторожны с использованием слова «отражено» для этого, так как Reflection имеет конкретное и несвязанное значение в Computer Science. Возможно, «обратный» был бы лучшим выбором? – IMSoP
@IMSoP В документах Python используется фраза «отраженные операнды» здесь: https://docs.python.org/3/reference/datamodel.html#object.__radd__ Конечно, это другой случай, потому что у операторов упорядочения нет [коммутативное свойство] (http://en.wikipedia.org/wiki/Commutative_property). Тем не менее, я бы не сказал, что это полностью не связано со словом «отражено» в смысле «оглянуться назад», которое используется в выражениях типа «a op b», где метод op объекта a не может обрабатывать объект b. – Shashank
Ах, справедливо. Тогда у кого-то плохого выбора слова, а не твоего, и слишком поздно, чтобы исправить это сейчас. :) – IMSoP