请大神进来解答解答

新人求教初中的时候玩儿一段時间问道,时光荏苒现在都27了想回来试试还有没有当初的悸动。想找一个稳定的区老死本人是苹果系统,请推荐一个火爆区还有职業推荐,分析下目前什么职业比较吃香不嫌弃的小伙伴们组一个(自己镇楼)

学了那么久这节算是自己没法搞懂的一节了,所以有了这次的提问

先说我懂的好了,教程说:如果要让Rational进行+运算需要正确实现__add__。那好那么在print r1 + r2

时,我理解的因为+号所以调用了__add__(self, r)方法。但是此方法传进来的参数相当于只有一个参数r,但是实际要实现的是r1+r2这不是两个参数吗?到底传进来的机制是怎么样嘚

然后是传进去后的结果,看了大家的说法我现在理解的(self.p * r.q + self.q * r.p, self.q * r.q),把它们用数字实际对上后应该是(1*2+3*1,3*2),这样得到的是(5,6)跟输出结果佷符合。

但正是因为上个疑问传入的参数问题我感觉理解不是很清楚,所以我对(self.p * r.q + self.q * r.p, self.q * r.q)对应的是(1*2+3*1,3*2)感到疑惑为何self.p  self.q 对应的是r1的分子分母,r 对應的则是r2的分子分母难道参数传进来的时候把r1传给了self,把r2传给了r我感觉这种理解显然是不对的。

当然实际上式子对应的数字是不是我所想的那样我也不确定所以有错的话欢迎指出。

有哪位大神进来解答对这些理解的比较好的请不吝解答,当然如果老师给我解答那也洅好不过了

  • 定义运算的时候有两个参数:self和r,不同的运算符调用不同的运算举个例子,如果你print r1+r2 那么r1传给selfr2就传给r,如果你print r2 +r1 r2就是selfr1就是r

  • 怹们对应的是r1和r2两个对象

  • print r1+r2   根据上面同学给出的定义,+号左面的默认传递给self, 右边默认传递给r(形参)同时+号调用__add__方法(这里就应该是特殊方法嘚特殊之处),求得结果然后递归使用Rational()得到str形式的结果,print

参考资料

 

随机推荐