python如何實現左側的運算子過載?

時間 2021-06-08 14:24:53

1樓:Kittyhawk

先從myob * 1說起,假設myob屬於Myob類, 這裡我們過載了__mul__

class

Myob

:def

__mul__

(self

,val

):print

("mul"

)過載了__mul__後我們就可以順利實現myob * 1, 結果是列印出"mul"

但如果把兩者換一下位,1 * myob,就會報錯了。

這是因為1 * myob會呼叫1裡的__mul__。

這時候我們可以在Myob裡過載另乙個運算法則方法叫做__rmul_, 這裡的意思是如果在計算1.__mul__(myob)的時候出錯的話不會報錯,而是會立刻切換到myob.__rmul__(1)。

所以,如果把Myob改為

class

Myob

:def

__mul__

(self

,val

):print

("mul"

)def

__rmul__

(self

,val

):print

("rmul"

)再計算1 * myob的話,就會列印出"rmul"。

C Primer 中的 輸入運算子返回其左側運算物件作為其計算結果 是什麼意思?

確切地說返回的是原物件的引用,decltype cin i 與decltype cin 均為istream 而decltype cin 為istream,把C Primer先通讀一遍就明白了,有一章是class的運算子過載就講這個 已重置 cin本身是istream類的乙個物件,當你運算表示式cin...

python 如何實現遠端tail f?

37丫37 django channels寫個也不複雜,這裡有關於channels的介紹,也有實現tailf的例子 Django使用Channels實現WebSocket 上篇 guyskk tail f是不會結束的,所以你要開新執行緒去讀取日誌並寫入django response 並且respon...

Python 如何實現月份相加?

奚衡 受邀答題,自己DIY了乙個計算這個的函式,思路大致 1 計算出這段指定時間的當天時間凌晨時間和疊加月後的凌晨時間 2 求出相差的天數 3 最後再加天數再指定的時間內疊加即可 usr bin env python coding utf 8 from datetime import datetim...