问答详情
源自:4-4 Python类的数学运算

self和r分别代表什么意思?self.p * r.q + self.q * r.p, self.q * r.q

self.p * r.q + self.q * r.p, self.q * r.q

在这里面self和r都代表什么呢?

>>> r1 = Rational(1, 2) 
运行这段时,self指代实例r1,self.p=1,self.q=2, 

得出:
1*r.q+2*r.p, 2*r.q

这里面的r指代r2吗?为什么程序知道 def __add__(self, r)的r指代r2呢?


>>> r2 = Rational(2, 3)
运行这段时,self又指代实例r2了,感觉很困惑

提问者:葡萄葡萄 2022-12-28 16:51

个回答

  • 土斤土斤
    2023-01-12 11:22:00

     r1 = Rational(1, 2) 

    这里是调用了Rational类的__init__方法创建了一个实例,然后将这个实例赋予给了r1;

    self.p * r.q + self.q * r.p, self.q * r.q

    这是调用了r1这个实例的__add__方法,self是指实例本身也就是r1,而r这个参数就是指代r2,下文两个语句是等价的

    print(r1+r2)
    print(r1.__add__(r2))

    从这地方引申出来,假设还有一个r3,那程序是怎么跑的呢

    r1 = Rational(1, 2)
    r2 = Rational(2, 3)
    r3 = Rational(3, 4)
    print(r1+r2+r3)

    程序会先算r1+r2,然后再用这个算出的结果x去+r3