0

我几乎完成了我的 Class Rational,在实现比较时遇到了一点问题。当我将 Rational 数与 int 进行比较时,如果 Rational 是左操作数,那么一切都很好,但是当比较是 int < Rational 时,它就不起作用了.. 使用诸如 : __lt__, __gr__,之类的方法会出现这个问题__ge__ __le__。我的一种方法:

def __lt__(self,other):
    n1=self.n
    d1=self.d
    if isinstance(other,Rational):
        n2=other.n
        d2=other.d
    elif isinstance(other,int):
        n2=other
        d2=1
    return (n1/d1)<(n2/d2)
4

1 回答 1

0

例如:

>>> r2=Rational("0.25")
>>> r2
<Rational 1/4>
>>> r2<4
True
>>> 4<r2
Traceback (most recent call last):
  File "<pyshell#33>", line 1, in <module>
    4<r2
TypeError: unorderable types: int() < Rational()
>>> 
于 2013-12-06T19:13:00.633 回答