请大家看看这段代码哪里错了,如果把def f(a, b)放到class前就行,这是为什么?
class Rational(object):
def __init__(self, p, q):
self.p = p
self.q = q
def __add__(self, r):
return Rational(self.p * r.q + self.q * r.p, self.q * r.q)
def __sub__(self, r):
return Rational(self.p * r.q - self.q * r.p, self.q * r.q)
def __mul__(self, r):
return Rational(self.p * r.p, self.q * r.q)
def __div__(self, r):
return Rational(self.p * r.q, self.q * r.p)
def f(a, b):
if b == 0:
return a
return f(b, a % b)
def __str__(self):
x = f(self.p, self.q)
return '%s/%s' % (self.p / x, self.q / x)
__repr__ = __str__
r1 = Rational(1, 2)
r2 = Rational(1, 4)
print r1 + r2
print r1 - r2
print r1 * r2
print r1 / r2