的右側的對象我最近了解了運營商在python超載,我想知道如果下面是可能的。運營商在python超載與運營商
考慮如下因素hypothetica /做作類。
class My_Num(object):
def __init__(self, val):
self.val = val
def __add__(self, other_num):
if isinstance(other_num, My_Num):
return self.val + other_num.val
else:
return self.val + other_num
我知道,多數民衆贊成上面寫的方式,我可以做這樣的事情
n1 = My_Num(1)
n2 = My_Num(2)
n3 = 3
print n1 + n2
print n1 + n3
和那些將達到預期效果。我也知道,它目前寫的方式我不能這樣做
n1 = My_Num(1)
n2 = 2
print 2 + n1
反正有嗎?我知道這個例子是人爲設計的,但是我有一個應用程序,如果我做了操作符重載,那麼它將非常有用,我定義操作符的類可以出現在操作符的右側。這在Python中可能嗎?
謝謝。 __radd__是唯一允許這樣做的嗎?我需要爲我的應用程序重載的具體運算符是>>和<<運算符。我只是運氣不好,我想爲這些運營商做這件事? – martega
沒有。你點擊鏈接了嗎?有'__rrshift__',等等。 – senderle
通過控制爲每個班級定義哪些操作員,可以在有限範圍內進行正確的比較。例如,如果A和B僅定義了__lt__, A A將調用屬於小端的方法。 –