類可以過載加減運算,列印,函式呼叫,索引等內建運算,運算子過載使我們的物件的行為與內建函式一樣,在python呼叫時操作符會自動的作用於類的物件,python會自動的搜尋並呼叫物件中指定的方法完成操作。
常見的運算子過載方法:
#舉例
#數字和字串都能相加
print(1
+2)print
("1"
+"2"
)#不同的型別用加法會有不同的解釋
class
person
(object):
def__init__
(self, num)
: self.num = num
#運算子過載
def__add__
(self, other)
:return person(self.num + other.num)
#方法重寫
def__str__
(self)
:return
"num = "
+str
(self.num)
#如果兩個物件相加會怎樣?
#物件相加,編譯器解釋不了,所以就要用到運算子過載
per1 = person(1)
per2 = person(2)
print
(per1 + per2)
#上述列印就等價於:print(per1.__add__(per2)),只不過add方法會自動呼叫
print
(per1)
print
(per2)
練習: 重寫list類新增乙個相減的功能:
list1-list2中元素交集
__sub __
class
mylist
(list):
def__sub__
(self, other)
: list1 =
#創乙個空列表
#遍歷第乙個傳入的列表,如果第乙個列表中的元素在第二個列表中能找到,加入空列表
for x in self:
if x in other:
# print(x)
return list1
if __name__ ==
"__main__"
: list1 = mylist([1
,2,3
,4])
list2 = mylist([1
,2,3
,5])
print
(list1-list2)
# 輸出結果[1
,2,3
]
運算子過載之過載型別運算子
普通型別 類型別 呼叫對應的只有乙個引數 引數的型別就是這個普通型別 的建構函式 需求 boy boy1 10000 薪資 建構函式boy int boy boy2 rock 姓名 建構函式boy char 普通型別賦值給類型別其實很簡單,就是專門的對這個賦值的型別定義乙個建構函式。編譯器在執行 的...
運算子過載 賦值運算子的過載
有時候希望賦值運算子兩邊的型別可以不匹配,比如,把乙個int型別變數賦值給乙個complex物件,或把乙個 char 型別的字串賦值給乙個字串物件,此時就需要過載賦值運算子 注意 賦值運算子 只能過載為成員函式 賦值運算子過載例項示例 include include using namespace ...
運算子過載
c 中的運算子 1。大多數系統預定義運算子都能過載 不值得過載 不能被過載 2過載不能改變優先順序 不能改變結合性 不能改變運算子所需運算元的個數 過載後,可按這些運算子的表達方式使用 運算子過載的語法 一 通過運算子過載函式進行過載 1。運算子過載函式是成員函式 語法形式 type x opera...