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

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

提问者:葡萄葡萄 2020-10-22 09:00

个回答

  • Zobeltitz
    2020-10-23 22:59:51
    已采纳

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

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

  • 慕侠6748888
    2020-10-25 00:32:20

    通俗解释一下楼上的话:

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

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

    使用了 __init__

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

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

    大概就这意思吧!