1. 程式人生 > >【學習】操作符重載

【學習】操作符重載

sin 以及 則無 bsp 能夠 讓其 .com 操作符 lin

2018/8/21 15:16:56
何為操作符重載? 1. 操作符重載就是為了讓原有操作符能夠作用於用戶定義的類型,例如‘+’操作符原來只能用於兩側均為數字或字符串的情況,通過操作符重載可以實現如兩個時刻相加求和(類似11:20:00 + 1:25:20)。
 1 class Time(object):
 2     def __init__(self,hour=0,minute=0,second=0):
 3         self.hour = hour
 4         self.minute = minute
 5         self.hour = hour
 6     ...
 7     def
__add__(self,other): 8 ‘‘‘以下僅作示意用,未考慮進位‘‘‘ 9 hour = self.hour + other.hour 10 minute = self.minute + other.hour 11 second = self.second + other.second 12 print(%.2d:%.2d:%.2d %(hour,minute,second)) 13 14 start = Time(11,20) 15 end = Time(1,25,20) 16
‘‘‘當運行+運算符會自動調用Time類中的__add__方法‘‘‘ 17 start + end
以上對 ‘+‘ 運算符進行了重新的定義,讓其能夠對Time類進行操作,接下來再復雜一點。 2. 若左右兩側均為Time類,則按照上面方法計算;若其中右側定為某時間間隔呢,這裏就涉及到數據類型的判斷。
 1 class Time(object):
 2     def __init__(self,hour=0,minute=0,second=0):
 3         self.hour = hour
 4         self.minute = minute
 5         self.second = second
6 ... 7 def __add__(self,other): 8 ‘‘‘內置函數isinstance判斷數據類型‘‘‘ 9 if isinstance(other,Time): 10 ‘‘‘類中調用類的函數不需要self參數‘‘‘ 11 self.add_time(other) 12 if isinstance(other, int): 13 self.add_interval(other) 14 def add_time(self,other): 15 ‘‘‘以下僅作示意用,未考慮進位‘‘‘ 16 hour = self.hour + other.hour 17 minute = self.minute + other.minute 18 second = self.second + other.second 19 print(%.2d:%.2d:%.2d %(hour,minute,second)) 20 def add_interval(self,other): 21 ‘‘‘以下僅作示意用,未考慮進位‘‘‘ 22 hour = self.hour 23 minute = self.minute 24 second = self.second + other 25 print(%.2d:%.2d:%.2d %(hour,minute,second)) 26 27 start = Time(11,20) 28 end = Time(1,25,20) 29 ‘‘‘當運行+運算符會自動調用Time類中的__add__方法‘‘‘ 30 start + end 31 >>>12:45:20 32 end1 = 20 33 ‘‘‘當運行+運算符會自動調用Time類中的__add__方法‘‘‘ 34 start + end1 35 >>>11:20:20
3.總結 以上介紹了操作符重載的基本用法,實際的用法會有更多。以下鏈接列出支持操作符重載的操作符以及其在類中所對應方法的名稱(必須嚴格按照__X__的格式,否則無法識別) https://www.cnblogs.com/jessonluo/p/4742148.html

【學習】操作符重載