我目前是Python的新手,我不知道为什么我会收到错误:
a<r raised exception RuntimeError: maximum recursion depth exceeded while calling a Python object
当我这样做时:
a = Rational(1,3)
r = Rational(0,5)
print(a<r)
我目前的代码是:
class Rational:
def _gcd(x,y):
while y != 0:
x, y = y, x % y
return x
def __init__(self, num = 0, denom = 1):
gcd = Rational._gcd(num, denom)
self.num = int(num / gcd)
self.denom = int(denom / gcd)
def __lt__(self, right):
return Rational(self.num, self.denom) < Rational(right.num, right.denom)
当我做同样的事情时,所有其他关系运算符也会发生。 有人可以在这件事上启发我吗?我该如何处理或解决这个问题?
谢谢!
答案 0 :(得分:1)
这一行:
Rational(self.num, self.denom) < Rational(right.num, right.denom)
...再次调用__lt__
方法,导致无限递归。尝试不同的方法,假设我们使用的是Python 3.x(或者在Python 2.x中,from __future__ import division
事先已经执行过),这应该可行:
self.num/self.denom < right.num/right.denom