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

来源:4-4 Python类的数学运算

葡萄葡萄

2020-10-22 09:00

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回答

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

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

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

    葡萄葡萄

    谢谢你的解释

    2020-10-25 06:48:00

    共 1 条回复 >

  • 慕侠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__

    大概就这意思吧!


    葡萄葡萄

    谢谢你的解释 这我就看懂这个运行顺序啦~

    2020-10-25 06:48:27

    共 1 条回复 >

Python3 进阶教程(新版)

学习函数式、模块和面向对象编程,掌握Python高级程序设计

41910 学习 · 236 问题

查看课程

相似问题