为了账号安全,请及时绑定邮箱和手机立即绑定

自建的类Rational为什么可以用作函数?

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类的这整个代码块里,这是一种什么循环?还没创建完怎么就能自己用了?

正在回答

2 回答

首先调用add函数实在创建Rational类之后的,所以在调用这个函数的时候Rational已经创建完了,不会出现问题

Rational()是创建一个Rational类型的对象,调用的是__init__构造方法,这个函数返回一个Rational类型的对象,这个对象是运算结果

0 回复 有任何疑惑可以回复我~
#1

葡萄葡萄 提问者

谢谢你的解释
2020-10-25 回复 有任何疑惑可以回复我~

通俗解释一下楼上的话:

类里面的的方法(def)并不是一用就全部一起用的,

在:r1 = Rational(1,2)和r2 = Rational(2,3)也就是创建对象的时候

使用了 __init__

当遇到print(r1+r2)的时候就用__add__

print(r1-r2)的时候就用__sub__

大概就这意思吧!


2 回复 有任何疑惑可以回复我~
#1

葡萄葡萄 提问者

谢谢你的解释 这我就看懂这个运行顺序啦~
2020-10-25 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

自建的类Rational为什么可以用作函数?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信