Rational
Rational(self.p * r.q + self.q * r.p, self.q * r.q)
这里的表示看不懂,什么意思呢
Rational(self.p * r.q + self.q * r.p, self.q * r.q)
这里的表示看不懂,什么意思呢
2015-10-01
先看看有理数的定义:在数学上,有理数是一个整数a和一个非零整数b的比,例如3/8,通则为a/b,故又称作分数。0也是有理数,也是整数。有理数是整数和分数的集合,整数亦可看做是分母为一的分数。
你贴的
Rational(self.p * r.q + self.q * r.p, self.q * r.q)代码是 class Rational(object)里的 __add__方法
用下面这个例子来解释
r1 = Rational(1, 3)
r2 = Rational(1, 2)
print r1+r2
首先r1 是一个对象 p=1 q=3 r2 p=1 q=2
r1+r2 时,r1 就是上面式子里面的 self , r2 就是上面式子里的 r
self.p * r.q + self.q * r.p = 1x2 + 3x1 = 5
self.q * r.q = 3 x 2 = 6
代入 __str__ 里 输出的时候,就使用 return '%s/%s' % (self.p, self.q) 输出为 5/6
第一个问题:是对的。
第二个问题:那你算1/2 + 1/3 的方法是?如果你有更好的方法,也可以写成你自己的方法
单独的 r1 = Ratonal(1,2) 并没有计算,只是产生了有理数类的对象 也就是调用了 类里的 __init__ 方法
r3= Rational(self.p * r.q + self.q * r.p, self.q * r.q) 这么写是没有结果的。因为在传参的时候 self 和 r并不存在。
这里你需要理解一下 类的 __add__方法,这个方法是python类的 内置方法,作用是 在 两个对象相加的时候,分别把两个 对象 作为 参数 代入进行计算。在我们的实例里
r1+r2 实际上调用了 他们的对象里的 __add__ 方法,把他们分别作为 self 和 r 两个参数代入。
举报