自建的類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-23
首先調用add函數實在創建Rational類之后的,所以在調用這個函數的時候Rational已經創建完了,不會出現問題
Rational()是創建一個Rational類型的對象,調用的是__init__構造方法,這個函數返回一個Rational類型的對象,這個對象是運算結果
2020-10-25
通俗解釋一下樓上的話:
類里面的的方法(def)并不是一用就全部一起用的,
在:r1 = Rational(1,2)和r2 = Rational(2,3)也就是創建對象的時候
使用了 __init__
當遇到print(r1+r2)的時候就用__add__
print(r1-r2)的時候就用__sub__
大概就這意思吧!