目前學到運算子多載的部分,書中內容只做了例子,但關于原理有三點疑問弄不明白:
代碼部分:
class Test:
def __init__(self, val):
self.val = val
def __add__(self, other):
print('add', self.val, other)
return self.val + other
問題部分:
1、定義運算子多載的時候,它的撰寫是有規則的嗎? 例如定義__add__,一定是接受2個引數(self, other),一定是return self.val + other嗎?是否每種運算子多載都有特定的撰寫規則?還比如__getitem__多載,書中例子寫的是:
class Test:
def __getitem__(self, i):
return self.data[1]
2、為什么要這么寫? 如果只是想讓自定義的類擁有迭代的功能難道只寫 def __getitem(self): pass 就可以了嗎?
3、在定義的__add__里面,也只是寫了“+”這個符號,我的理解是:怎么“加”的是python本身封裝好了的,運算子多載的用處只是在為了讓用戶定義的類擁有“+”的運算,頂多讓你自定義在“+”的基礎上還做些什么。這樣理解對不對, 關于運算子多載能舉比較實際點的用處嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/10183.html
上一篇:go怎樣實作反向socks5?
