亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

自建的類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下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號