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)
最后一行return还出现了Rational(后面加运算逻辑),这不是函数的表达方式吗?这是把( )里的东西都变成了Rational这个type?
但是return里应用Rational还在创建Rational类的这整个代码块里,这是一种什么循环?还没创建完怎么就能自己用了?
首先调用add函数实在创建Rational类之后的,所以在调用这个函数的时候Rational已经创建完了,不会出现问题
Rational()是创建一个Rational类型的对象,调用的是__init__构造方法,这个函数返回一个Rational类型的对象,这个对象是运算结果
通俗解释一下楼上的话:
类里面的的方法(def)并不是一用就全部一起用的,
在:r1 = Rational(1,2)和r2 = Rational(2,3)也就是创建对象的时候
使用了 __init__
当遇到print(r1+r2)的时候就用__add__
print(r1-r2)的时候就用__sub__
大概就这意思吧!